T-SQL에서 문자열을 날짜로 어떻게 변환 할 수 있습니까?
내 테스트 케이스는 문자열입니다. '24.04.2012'
T-SQL에서 문자열을 날짜로 어떻게 변환 할 수 있습니까?
내 테스트 케이스는 문자열입니다. '24.04.2012'
답변:
CONVERT(datetime, '24.04.2012', 104)
트릭을해야합니다. 자세한 내용은 여기를 참조하십시오. CAST 및 CONVERT (Transact-SQL)
CONVERT(DateTime, DateField, 104)
데이터베이스가 MS SQL Server 2012 이상이라고 가정하면 작동하는 솔루션이 있습니다. 기본 명령문에는 인라인 try-parse가 포함됩니다.
SELECT TRY_PARSE('02/04/2016 10:52:00' AS datetime USING 'en-US') AS Result;
프로덕션 버전에서 구현 한 내용은 다음과 같습니다.
UPDATE dbo.StagingInputReview
SET ReviewedOn =
ISNULL(TRY_PARSE(RTrim(LTrim(ReviewedOnText)) AS datetime USING 'en-US'), getdate()),
ModifiedOn = (getdate()), ModifiedBy = (suser_sname())
-- Check for empty/null/'NULL' text
WHERE not ReviewedOnText is null
AND RTrim(LTrim(ReviewedOnText))<>''
AND Replace(RTrim(LTrim(ReviewedOnText)),'''','') <> 'NULL';
ModifiedOn 및 ModifiedBy 열은 내부 데이터베이스 추적 용도로만 사용됩니다.
다음 Microsoft MSDN 참조를 참조하십시오.
CONVERT가 작동하지만 실제로 사용해서는 안됩니다. SQL-Server에서 문자열 값을 구문 분석하는 이유를 자문해야합니다. 이 작업이 일부 데이터를 수동으로 수정하는 일회성 작업 인 경우 다음 번에는 해당 데이터를 얻지 못할 수도 있지만 응용 프로그램에서이를 사용하는 경우 변경해야합니다. 가장 좋은 방법은 "날짜"데이터 유형을 사용하는 것입니다. 이것이 사용자 입력이라면 더 나쁩니다. 그런 다음 먼저 클라이언트에서 몇 가지 확인을 수행해야합니다. SQL-Server가 날짜를 예상하는 문자열 값을 전달하려면 항상 ISO 형식 ( 'YYYYMMDD')을 사용할 수 있으며 자동으로 변환되어야합니다.
CONVERT(DateTime, ExpireDate, 121) AS ExpireDate
필요한 것을 수행 할 것입니다.
2012-04-24 00:00:00.000