SQL Server 2005에서 시간 부분없이 현재 날짜를 가져 오는 방법은 무엇입니까? GETDATE()를 사용하고 있지만 시간을 00 : 00 : 00.0

답변

레코드 세트를 반복해야하고 SQL Server 2008에 날짜가없는 경우 가장 빠른

SELECT DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0) 

StackOverflow에 대한 두 가지 다른 훌륭한 답변 : 1 , 2

Varchar 변환은이를 수행하는 최악의 방법 중 하나입니다. 물론 하나의 값에 대해서는 중요하지 않을 수 있지만 “들어가는 것이 좋은 습관입니다.

이 방법도 결정적입니다. , 계산 된 열을 인덱싱하려는 경우. SQL Server에 대한 책을 쓰는 사람조차도 날짜 시간 변환

이 기술도 확장 가능합니다.

  • 어제 : DATEADD(day, DATEDIFF(day, 0, GETDATE()), -1)
  • 월초 : DATEADD(month, DATEDIFF(month, 0, GETDATE()), 0)
  • 마지막 말 월 : DATEADD(month, DATEDIFF(month, 0, GETDATE()), -1)
  • 다음 달 시작 : DATEADD(month, DATEDIFF(month, 0, GETDATE()), 31)

수정 :

결정성에 대해 언급했듯이, 스타일 112를 사용하지 않는 한 varchar 메서드는 안전하지 않습니다.

여기에있는 다른 답변은 “이를 열에 적용하지 않을 것입니다. 맞지만 10 만 개의 행을 선택하거나 계산 된 열 또는 GROUP BY 날짜 만 추가 할 수 있습니다. 그런 다음이 방법을 사용해야합니다.

다른 답변도 스타일 110을 언급합니다. 이것은 언어 나 SET이 아닙니다. DATEFORMAT은 안전하며 “영국식”언어 설정으로 실패합니다. Tibor Karaszi의 날짜 시간 데이터 유형에 대한 최종 가이드 를 참조하세요.

댓글

  • 제공된 lin k는 죽었습니다.

Answer

형식 패턴을 지정하는 varchar로 변환해야합니다. case) 그런 다음 다시 datetime으로 변환 (또는 캐스트)합니다.

select getdate(), cast(convert(varchar(10), getdate(), 110) as datetime) 

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다