2010-12-27 2 views
0

datetime이있는 열을 변환하는 데 문제가있어서 getdate로 변환해야합니다.datetime에서 getdate 로의 변환

예를 들어 열 A (datetime, null)이고 해당 열에는 getdate에 올바른 값이 포함되어 있으며 일부 값은 '1900-01-01 15 : 32 : 00.000'과 같습니다. 값을 일반 getdate 값으로 변경하는 데 도움이 필요합니다. 그리고 해당 열의 일부 필드에는 NULLS도 있습니다. 사전에

감사합니다, Shashra

+0

1900-01-01 15 : 32 : 00.000은 실제로 있을까요? GetDate()는 시스템에 따라 현재 날짜/시간을 반환하는 비 결정적 함수입니다. – JoshBerke

+0

"Getdate"는 형식이나 데이터 형식의 이름이 아니라 호출 할 때마다 호출 된 시간을 반환하는 함수의 이름입니다. 그럼, "getdate"로 변환한다는 것은 무엇을 의미합니까? –

+0

정확히 무엇을하려고합니까? '1900-01-01'의 모든 날짜를 현재 날짜와 시간으로 설정 하시겠습니까? 'NULLS' 및 다른 날짜를 무시합니까? – codingbadger

답변

1

몇 가지 :.

에 GetDate()가 현재 날짜와 시간을 반환하는 함수입니다 네, 현재 시간을 포함

당신은 '순수'시간과 같은 외모를 (제공하는 예입니다. 즉, 날짜 구성 요소를 사용할 수 없음). 이것이 실제 데이터라면, 어떻게 든 그 필드에 기록 된 0. #### 형식의 10 진수 값을 얻게됩니다. 물론, 그 날짜의 실제 데이터를 가질 수도 있고,이 질문에 대한 예제를 만들었을 수도 있습니다.

마지막으로 시간 구성 요소를 제거하여 '순수한'날짜가 있으면 convert (datetime, convert (nvarchar (50), getdate(), 101))를 시도하십시오. 내부 변환은 mm/dd/yyyy 형식으로 텍스트를 만들고 외부 변환은 yyyy-mm-dd 00 : 00 : 00.000의 형식으로 바뀝니다.

1
  • 당신은 GETDATE의 출력을() 당신이 그것을마다 다를 수하려면 저장하지 않을 것입니다. 당신은 "지난 달에 아무것도 OK입니다"와 같은 arbritrary 조건을하지 않고 "거짓"값에서 "진짜"vakes을 구별 할 안전한 방법이 없습니다 SELECT col1, col1, GETDATE() AS Now FROM Mytable...

  • 할 것입니다. "1900-01-01 15 : 32 : 00.000"은 "을 의미 값을 무시하면 유효한 날짜 시간 값

어디 한 번 비트가 아닌 날짜 (1900년 1월 1일) 다음 대해 :

SELECT 
    col1, col2, 
    CASE WHEN DateTimeCol <> '1900-01-01 15:32:00.000' THEN DateTimeCol ELSE GETDATE() END, 
    CASE WHEN DateTimeCol > '1901-01-01' THEN DateTimeCol ELSE GETDATE() END, 
    ...