TSQL datetime 필드에서 YYY-MM-DD 형식의 날짜를 가져오려면 어떻게 해야 합니까?
해야 하나요?YYYY-MM-DD
? SQL 이상에서합니다.SQL Server 2000을 사용합니다.SQL Server sql sql sql sql sql sql sql sql sql sql sql sql sql sql sql sql sql sql sql sql sql sql?아니면 결과 세트를 취득한 후에 프로그래밍 방식으로 변환하는 것이 더 쉬울까요?
Microsoft Technet에서 CAST 및 CONVERT를 읽었는데 원하는 형식이 나열되지 않아 날짜 형식을 변경할 수 없습니다.
SELECT CONVERT(char(10), GetDate(),126)
당신이 원하지 않는 시간 부분의 바르샤르 찹의 크기를 제한합니다.
SELECT convert(varchar, getdate(), 100) -- mon dd yyyy hh:mmAM
SELECT convert(varchar, getdate(), 101) -- mm/dd/yyyy – 10/02/2008
SELECT convert(varchar, getdate(), 102) -- yyyy.mm.dd – 2008.10.02
SELECT convert(varchar, getdate(), 103) -- dd/mm/yyyy
SELECT convert(varchar, getdate(), 104) -- dd.mm.yyyy
SELECT convert(varchar, getdate(), 105) -- dd-mm-yyyy
SELECT convert(varchar, getdate(), 106) -- dd mon yyyy
SELECT convert(varchar, getdate(), 107) -- mon dd, yyyy
SELECT convert(varchar, getdate(), 108) -- hh:mm:ss
SELECT convert(varchar, getdate(), 109) -- mon dd yyyy hh:mm:ss:mmmAM (or PM)
SELECT convert(varchar, getdate(), 110) -- mm-dd-yyyy
SELECT convert(varchar, getdate(), 111) -- yyyy/mm/dd
SELECT convert(varchar, getdate(), 112) -- yyyymmdd
SELECT convert(varchar, getdate(), 113) -- dd mon yyyy hh:mm:ss:mmm
SELECT convert(varchar, getdate(), 114) -- hh:mm:ss:mmm(24h)
SELECT convert(varchar, getdate(), 120) -- yyyy-mm-dd hh:mm:ss(24h)
SELECT convert(varchar, getdate(), 121) -- yyyy-mm-dd hh:mm:ss.mmm
SELECT convert(varchar, getdate(), 126) -- yyyy-mm-ddThh:mm:ss.mmm
SQL Server 2012 이후 (원래 질문은 2000년) :
SELECT FORMAT(GetDate(), 'yyyy-MM-dd')
원하는 양식은 온라인 책자에 나와 있습니다.
http://msdn.microsoft.com/en-us/library/aa226054(SQL.80).aspx
예를 들어, 다음을 시도해 보십시오.
select convert(varchar,getDate(),120)
select convert(varchar(10),getDate(),120)
convert
형식 지정자 120을 가진 함수는 "yyy-MM-d HH:mm:ss" 형식을 제공하므로 날짜 부분만 가져오려면 길이를 10으로 제한해야 합니다.
convert(varchar(10), theDate, 120)
그러나 일반적으로 날짜 형식은 데이터베이스나 비즈니스 계층이 아닌 프레젠테이션 계층에서 수행하는 것이 좋습니다.데이터베이스에서 포맷된 날짜를 반환할 경우 클라이언트 코드는 해당 날짜를 계산해야 하는 경우 해당 날짜를 다시 해석해야 합니다.
C#의 예:
theDate.ToString("yyyy-MM-dd")
YYYYMMDD의 경우 시험해 보십시오.
select convert(varchar,getDate(),112)
SQL Server 2008에서만 테스트했습니다.
위의 답변에서 가장 간단한 방법이 무시되거나 생략된 이유를 알 수 없습니다.
SELECT FORMAT(GetDate(),'yyyy-MM-dd');--= 2020-01-02
SELECT FORMAT(GetDate(),'dd MMM yyyy HH:mm:ss');-- = 02 Jan 2020 08:08:08
나는 두 번째 언어를 선호해. 왜냐하면 네가 어떤 언어를 사용하든, 너는 그것이 무슨 날짜인지 이해할 수 있을 거야!
또한 SQL Server는 컴퓨터에 설정되어 있는 지역 포맷에 관계없이 저장 프로시저로 전송할 때 항상 이를 '이해'합니다.저는 프로그래밍에서 항상 풀이어(yyy), 월명(MM), 24시간 형식(대문자 HH)을 사용합니다.
다른 방법으로는...
CONVERT(varchar, DATEPART(yyyy, @datetime)) + '/' + CONVERT(varchar, DATEPART(mm, @datetime)) + '/' + CONVERT(varchar, DATEPART(dd, @datetime))
(저도) 타임 파트를 원하신다면 다음 스니펫이 도움이 될 수 있습니다.
SELECT convert(varchar, getdate(), 120) -- yyyy-mm-dd hh:mm:ss(24h)
SELECT convert(varchar, getdate(), 121) -- yyyy-mm-dd hh:mm:ss.mmm
SELECT convert(varchar, getdate(), 126) -- yyyy-mm-ddThh:mm:ss.mmm
--example -- 2008-10-02T10:52:47.513
replace(convert(varchar, getdate(), 111), '/','-')
"무엇을 잘라내지 않고" 묘기를 부립니다.
누군가 다른 방법으로 하고 싶어하다가 이걸 발견했을 때를 대비해서요
select convert(datetime, '12.09.2014', 104)
독일어 날짜 형식의 문자열을 날짜 개체로 변환합니다.
왜 104죠?여기를 참조해 주세요.http://msdn.microsoft.com/en-us/library/ms187928.aspx
캐스트 및 변환 링크에서는 다음과 같이 스타일 126을 사용합니다.
CONVERT (varchar(10), DTvalue, 126)
그러면 시간이 단축됩니다.yyy-mm-dd로 지정해야 하는 요건은 문자열 데이터형과 datetime이어야 함을 의미합니다.
하지만 솔직히 말하면, 당신이 그럴만한 이유가 없다면, 나는 고객에게 그것을 할 것입니다.
사용하실 수도 있습니다.이는 새 데이터 유형을 사용하여 수행됩니다.DATE
모든 이전 버전에서는 작동하지 않을 수 있지만 이후 버전에서는 사용하기 위해 대폭 간소화되었습니다.
SELECT CAST(getdate() AS DATE)
SELECT LEFT(CAST(getdate() AS DATE), 7)
날짜 대신 날짜로 사용하고 싶은 경우varchar
나중에 다시 변환하는 것을 잊지 마십시오.
select convert(datetime,CONVERT(char(10), GetDate(),126))
SQL Server 2008에서는 다음을 수행할 수 있습니다.CONVERT(date,getdate())
SELECT CONVERT(NVARCHAR(20), GETDATE(), 23)
다음을 사용합니다.
CONVERT(char(10),GETDATE(),126)
SELECT Code,Description FROM TABLE
-- This will Include only date part of 14th March 2010. Any date with date companents will not be considered.
WHERE ID= 1 AND FromDate >= CONVERT(DATETIME, '2010-02-14', 126) AND ToDate <= DATEADD(dd, 1, CONVERT(DATETIME, '2010-03-14', 126))
-- This will Include the whole day of 14th March 2010
--WHERE ID= 1 AND FromDate >= CONVERT(DATETIME, '2010-02-14', 126) AND ToDate < DATEADD(dd, 1, CONVERT(DATETIME, '2010-03-14', 126))
각 변환/캐스트 함수에 대해 CASE 문을 사용하는 것은 항상 유효합니다.
table XXXY를 테이블명으로 대체하고 issueDate_dat을 해당 테이블의 datetime 필드명으로 대체하십시오.
SELECT issueDate_dat, CONVERT(varchar, DATEPART(yyyy, issuedate_dat)) AS issueDateYYYY
, CASE WHEN (len(CONVERT(varchar, DATEPART(mm, issuedate_dat))) < 2) THEN '0' +CONVERT(varchar, DATEPART(mm, issuedate_dat)) ELSE CONVERT(varchar, DATEPART(mm, issuedate_dat)) END AS issueDateMM
, CASE WHEN (len(CONVERT(varchar, DATEPART(dd, issuedate_dat))) <2) THEN '0' +CONVERT(varchar, DATEPART(dd, issuedate_dat)) ELSE CONVERT(varchar, DATEPART(dd, issuedate_dat)) END AS issueDateDD
FROM tableXXXXY
도움이 됐으면 좋겠네요.샤그버트
이 솔루션은 심플하고 효과적이다(126개도)
CONVERT(NVARCHAR(MAX), CAST(GETDATE() as date), 120)
IFormatProvider culture = new System.Globalization.CultureInfo("fr-FR", true);
cmdGetPaymentStatement.Parameters.AddWithValue("@pStartDate", DateTime.Parse("22/12/2017", culture, System.Globalization.DateTimeStyles.AssumeLocal)).IsNullable = true;
데이트 상대를 슬래시로 구분하고 싶다면 이상한 짓은 하지 않아도 될 것 같아.그냥 백슬래시로 탈출해.그렇지 않으면 점으로 끝납니다.
SELECT FORMAT(GETDATE(),'yyyy\/MM');
SQL Server 2016에서 테스트 완료
소스 날짜 형식이 모두 엉망인 경우 다음과 같은 방법을 시도해 보십시오.
select
convert(nvarchar(50),year(a.messedupDate))+'-'+
(case when len(convert(nvarchar(50),month(a.messedupDate)))=1
then '0'+ convert(nvarchar(50),month(a.messedupDate))+'-'
else convert(nvarchar(50),month(a.messedupDate)) end)+
(case when len(convert(nvarchar(50),day(a.messedupDate)))=1
then '0'+ convert(nvarchar(50),day(a.messedupDate))+'-'
else convert(nvarchar(50),day(a.messedupDate)) end)
from messytable a
String 가공은 비싸고 FORMAT이 더 높기 때문에 Asher/Aaron Dietz의 응답은 top이 아니더라도 높지 않은 것에 놀랐습니다.질문은 ISO 8601 날짜를 요구하고 있고, string type으로 특별히 요구하는 것은 아닙니다.
가장 효율적인 방법은 다음 중 하나입니다(완성을 위해 Asher/Aaron Dietz가 이미 제안한 답변을 포함했습니다).
모든 버전
select cast(getdate() as date)
select convert(date, getdate())
2008년 이후
select convert(date, current_timestamp)
ANSI SQL 동등 2008 이상
select cast(current_timestamp as date)
참고 자료:
https://sqlperformance.com/2015/06/t-sql-queries/format-is-nice-and-all-but
https://en.wikipedia.org/wiki/ISO_8601
https://www.w3schools.com/sql/func_sqlserver_current_timestamp.asp
GetDate()를 String 형식으로 변경합니다.
SELECT FORMAT(GetDate(), 'yyyy-MM-dd HH:mm:ss')
언급URL : https://stackoverflow.com/questions/889629/how-to-get-a-date-in-yyyy-mm-dd-format-from-a-tsql-datetime-field
'itsource' 카테고리의 다른 글
Git에서 현재의 지점명을 취득하려면 어떻게 해야 하나요? (0) | 2023.04.12 |
---|---|
Bash 텍스트 파일에서 배열 생성 (0) | 2023.04.12 |
INSERT 문이 외부 키 제약 조건과 충돌합니다(SQL Server). (0) | 2023.04.07 |
SQL-Server에서 테이블 변수를 드롭하려면 어떻게 해야 합니까?이래도 되나? (0) | 2023.04.07 |
MySQL 열거형 데이터 유형과 동일한 SQL Server? (0) | 2023.04.07 |