SQL Server 날짜 시간을 더 짧은 날짜 형식으로 변환


82

datetimeSQL Server에 이와 같은 데이터를 제공 하는 열 10/27/2010 12:57:49 pm이 있고이 열을 쿼리하고 싶지만 SQL Server가 일 월과 연도를 반환하도록합니다. 2010 10 27또는 그런 것.

연구해야 할 기능은 무엇입니까?

다른 날짜 데이터 유형으로 변환해야합니까? 아니면 단순히 문자열로 변환 하시겠습니까?


2
이 기사를 살펴보십시오. msdn.microsoft.com/en-us/library/ms187928.aspx 구체적으로> 날짜 및 시간 스타일
Brissles

6
어떤 버전 의 SQL Server ?? SQL Server 2008은 새로운 날짜 및 시간 관련 데이터 유형을 도입했습니다. 예를 들어 DATE2008 년을 사용하는 경우 SELECT CAST(YourDateTimeColumn AS DATE)시간 부분없이 날짜 만 사용 하면 되돌릴 수 있습니다 .
marc_s


답변:


121

CONVERT를 살펴보십시오 . 세 번째 매개 변수는 변환하려는 날짜 시간 스타일입니다.

예 :

SELECT CONVERT(VARCHAR(10), GETDATE(), 103) -- dd/MM/yyyy format

12
106은 "dd mon yy"이고 "dd / MM / yyyy"는 103 인 것 같습니다
nahab

3
@nahab 당신이 맞습니다. 또한 연도가 단축되는 것을 방지하기 위해 varchar (10) 대신 varchar (11)을 사용해야했습니다 (예 : 1953 대신 195를 보았습니다)
Henrov

6
또한 mm / dd / yyyy 형식의 결과를 원하는 경우 101을 사용할 수 있습니다
iliketocode

57

이 시도:

print cast(getdate() as date )


5
나는이 옵션이 받아 들여진 대답보다 더 좋아합니다. 내 'order by'가 varchar 대신 올바르게 작동하도록 열을 Date 형식으로 남겨 둡니다.
Milne

2
SQL Server 2005 및 이전 버전에서는 작동하지 않습니다. DATE 데이터 유형은 SQL 2008에서 도입되었습니다.
JerryOL

위에서 언급했듯이 날짜 데이터 유형을 얻는 것은 참으로 좋지만 특정 형식 (예 : "dd MM yyyy")이 예상되는 경우 더 많은 것이 필요합니다.
trincot

15

날짜 형식의 결과가 필요한 경우 다음을 사용할 수 있습니다.

Select Convert(DateTime, Convert(VarChar, GetDate(), 101))

10

CAST 및 CONVERT 외에도 Sql Server 2008을 사용하는 경우 날짜 형식으로 변환 (또는 해당 형식을 사용하여 시작) 한 다음 선택적으로 다시 varchar로 변환 할 수 있습니다.

declare @myDate date
set @myDate = getdate()
print cast(@myDate as varchar(10))

산출:

2012-01-17

6

SQL Server 2005에서는 다음을 사용합니다.

select replace(convert(char(10),getdate(),102),'.',' ')

결과 : 2015 03 05


5

2018-03-30 08 : 43 : 28.177과 같은 결과를 제공 하는 datetime 필드 가있는 경우

제안 : 2018-03-30처럼 표시되도록 datetime날짜 로 변경하려고합니다.

cast(YourDateField as Date)

1
당신은 4 년 전이 답을 준 이미 jabu.hlong ... 새로운 것을 추가하지 않은
파블 Czapski

날짜가 OP 형식으로 렌더링된다는 보장은 없습니다. yyyy-MM-dd, dd / MM / yyyy, dd / MM / yyyy 00:00:00 또는 여전히 다른 것일 수 있습니다.
trincot

4

mm / dd / yy의 가장 짧은 날짜 형식은 다음을 사용하여 얻을 수 있습니다.

Select Convert(varchar(8),getdate(),1)

0

날짜 키워드 만 추가하면됩니다. Eg select date (orderdate), count (1) from orders where orderdate> '2014-10-01'group by date (orderdate);

orderdate는 날짜 시간입니다. 이 쿼리는 datetime이 아닌 해당 날짜의 주문을 표시합니다.

datetime 열에 적용된 날짜 키워드는 짧은 날짜로 변경됩니다.


0

모든 버전의 SQL Server : dateadd (dd, datediff (dd, 0, getdate ()), 0)


날짜가 OP 형식으로 렌더링된다는 보장은 없습니다. yyyy-MM-dd, dd / MM / yyyy, dd / MM / yyyy 00:00:00 또는 여전히 다른 것일 수 있습니다.
trincot

0

원래 DateTime 필드 : [_Date_Time]

Shortdate로 변환 : 'Short_Date'

CONVERT(date, [_Date_Time]) AS 'Short_Date'

이것은 문자열로 렌더링하기 위해 인터페이스에 남겨질 날짜 데이터 유형을 반환하므로 "27/12/2018 00:00:00"을 생성 할 수 있습니다. 그것은 OP가 요구 한 것이 아닙니다.
trincot

이것이 그가 얻고 자하는 것-dd / MM / yyyy; 이 무슨 내 대답은 2018년 11월 20일 생산
유세프 Albakoush

그럼 먼저 2018년 11월 20일의있다 없다 / MM / YYYY하지만 YYYY-MM-DD를 위해 dd. 그러나 렌더링은 실제로 시스템 (및 로케일)에 따라 다릅니다. 내 시스템에서는 시간, 분 및 초 (모두 0)도 생성합니다. 이는 SQL에 날짜를 문자열로 표시하는 방법을 알려주지 않았고 OP에는 정확한 문자열 형식이 필요하기 때문입니다.
trincot

첫째, 2018-11-20은 내 PC가 아랍어 사용을 위해 구성 되었기 때문입니다. 둘째, 난 내 PC에 간단한 날짜를 변경 한 후 그것을 시도 할 것이다
유세프 Albakoush
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.