T-SQL에서 datetime을 문자열로 변환하는 방법
나는 이미 여기에서이 질문을 찾을 수 없다는 것에 놀랐다.
날짜 시간 var가 있고 다른 문자열에 추가 할 수 있도록 문자열로 변환하고 싶습니다. 날짜 시간으로 쉽게 변환 할 수있는 형식을 원합니다.
어떻게 할 수 있습니까?
(날짜 부분과 시간 부분을 원합니다.)
다음 쿼리는 현재 날짜 시간을 가져와 문자열로 변환합니다. 다음 형식으로yyyy-mm-dd hh:mm:ss(24h)
SELECT convert(varchar(25), getdate(), 120)
문자열 에 convert
대한 여러 가지 방법이 있습니다 datetime
. 다음은 한 가지 방법입니다.
SELECT convert(varchar(25), getdate(), 121) – yyyy-mm-dd hh:mm:ss.mmm
데모 보기
다음은 모든 전환 목록이있는 웹 사이트입니다.
SQL Server에서 날짜 및 날짜 형식을 지정하는 방법
convert
Microsoft SQL Server 의 문을 사용하여 날짜를 문자열로 변환 할 수 있습니다 . 사용되는 구문의 예는 다음과 같습니다.
SELECT convert(varchar(20), getdate(), 120)
위는 YYYY-MM-DD HH:MM:SS
24 시간 시계 형식의 문자열로 현재 날짜와 시간을 반환합니다 .
명령문 끝의 숫자를 반환 된 문자열 형식을 변경하는 많은 숫자 중 하나로 변경할 수 있습니다. 이러한 코드 목록은 MSDN의 CAST 및 CONVERT 참조 섹션 에서 찾을 수 있습니다 .
내 요구 사항과 사용중인 버전에 따라 3 가지 방법이 있습니다.
방법은 다음과 같습니다 ..
1) 변환 사용
DECLARE @DateTime DATETIME = GETDATE();
--Using Convert
SELECT
CONVERT(NVARCHAR, @DateTime,120) AS 'myDateTime'
,CONVERT(NVARCHAR(10), @DateTime, 120) AS 'myDate'
,RIGHT(CONVERT(NVARCHAR, @DateTime, 120),8) AS 'myTime'
2) Cast 사용 (SQL Server 2008 이상)
SELECT
CAST(@DateTime AS DATETIME2) AS 'myDateTime'
,CAST(@DateTime AS DATETIME2(3)) AS 'myDateTimeWithPrecision'
,CAST(@DateTime AS DATE) AS 'myDate'
,CAST(@DateTime AS TIME) AS 'myTime'
,CAST(@DateTime AS TIME(3)) AS 'myTimeWithPrecision'
3) 고정 길이 문자 데이터 유형 사용
DECLARE @myDateTime NVARCHAR(20) = CONVERT(NVARCHAR, @DateTime, 120);
DECLARE @myDate NVARCHAR(10) = CONVERT(NVARCHAR, @DateTime, 120);
SELECT
@myDateTime AS 'myDateTime'
,@myDate AS 'myDate'
이전 답변 의 CAST
및 CONVERT
함수 외에도 SQL Server 2012 이상을 사용하는 경우 FORMAT 함수를 사용하여 DATETIME
기반 유형을 문자열 로 변환 합니다.
다시 변환하려면 반대 PARSE
또는 TRYPARSE
함수를 사용하십시오 .
형식 지정 스타일은 .NET을 기반으로하며 (ToString () 메서드의 문자열 형식 지정 옵션과 유사) 문화권을 인식하는 이점이 있습니다. 예.
DECLARE @DateTime DATETIME2 = SYSDATETIME();
DECLARE @StringResult1 NVARCHAR(100) = FORMAT(@DateTime, 'g') --without culture
DECLARE @StringResult2 NVARCHAR(100) = FORMAT(@DateTime, 'g', 'en-gb')
SELECT @DateTime
SELECT @StringResult1, @StringResult2
SELECT PARSE(@StringResult1 AS DATETIME2)
SELECT PARSE(@StringResult2 AS DATETIME2 USING 'en-gb')
결과 :
2015-06-17 06:20:09.1320951
6/17/2015 6:20 AM
17/06/2015 06:20
2015-06-17 06:20:00.0000000
2015-06-17 06:20:00.0000000
t-sql의 CAST 및 CONVERT 구문을 확인하십시오.
http://msdn.microsoft.com/en-us/library/ms187928.aspx
이것은 많은 사람들이 대답했지만 가장 간단한 해결책이 빠진 것 같습니다.
SQL SERVER (2012 이상)에는 여기에 표시된 것처럼 DATETIME2에 대한 암시 적 문자열이 있습니다.
Look at the section on "Supported string literal formats for datetime2"
To answer the OPs question explicitly:
DECLARE @myVar NCHAR(32)
DECLARE @myDt DATETIME2
SELECT @myVar = @GETDATE()
SELECT @myDt = @myVar
PRINT(@myVar)
PRINT(@myDt)
output:
Jan 23 2019 12:24PM
2019-01-23 12:24:00.0000000
Note: The first variable (myVar
) is actually holding the value '2019-01-23 12:24:00.0000000'
as well. It just gets formatted to Jan 23 2019 12:24PM
due to default formatting set for SQL SERVER that gets called on when you use PRINT
. Don't get tripped up here by that, the actual string in (myVer)
= '2019-01-23 12:24:00.0000000'
Try below :
DECLARE @myDateTime DATETIME
SET @myDateTime = '2013-02-02'
-- Convert to string now
SELECT LEFT(CONVERT(VARCHAR, @myDateTime, 120), 10)
SELECT CONVERT(varchar, @datetime, 103) --for UK Date format 'DD/MM/YYYY'
101 - US - MM/DD/YYYY
108 - Time - HH:MI:SS
112 - Date - YYYYMMDD
121 - ODBC - YYYY-MM-DD HH:MI:SS.FFF
20 - ODBC - YYYY-MM-DD HH:MI:SS
참고URL : https://stackoverflow.com/questions/15029860/how-to-convert-a-datetime-to-string-in-t-sql
'developer tip' 카테고리의 다른 글
VB.NET 대 C # 정수 나누기 (0) | 2020.10.07 |
---|---|
로깅 사용 pprint 출력 인쇄 (0) | 2020.10.07 |
Webpack ProvidePlugin 대 외부? (0) | 2020.10.07 |
캔버스에서 두 지점 사이의 거리 얻기 (0) | 2020.10.06 |
자바 스크립트로 현재 시간 형식 지정 (0) | 2020.10.06 |