source

SQL Server Varchar를 Datetime으로 변환

ittop 2023. 7. 31. 21:53
반응형

SQL Server Varchar를 Datetime으로 변환

날짜 형식은 2011-09-28 18:01:00(varchar)이며, 날짜 형식을 28-09-2011 18:01:00로 변경하여 날짜 시간으로 변환하고 싶습니다.어떻게 해야 하나요?

SELECT CONVERT(Datetime, '2011-09-28 18:01:00', 120) -- to convert it to Datetime

SELECT CONVERT( VARCHAR(30), @date ,105) -- italian format [28-09-2011 18:01:00]
+ ' ' + SELECT CONVERT( VARCHAR(30), @date ,108 ) -- full date [with time/minutes/sec]

웹 사이트는 몇 가지 포맷 옵션을 보여줍니다.

예:

SELECT CONVERT(VARCHAR(10), GETDATE(), 105) 

이것처럼.

DECLARE @date DATETIME
SET @date = '2011-09-28 18:01:00'
select convert(varchar, @date,105) + ' ' + convert(varchar, @date,108)

다음과 같은 모든 다른 스타일을 사용할 수 있습니다.

https://www.w3schools.com/sql/func_sqlserver_convert.asp

이 값의 범위는 다음과 같습니다.

CONVERT(data_type(length),expression,style)

스타일 값의 경우
필요한 사람을 고르세요 제가 106번이 필요했던 것처럼요

당신은 이런 식으로 할 수 있지만 그것은 그것을 바르샤바로 남깁니다.

declare @s varchar(50)

set @s = '2011-09-28 18:01:00'

select convert(varchar, cast(@s as datetime), 105) + RIGHT(@s, 9)

또는

select convert(varchar(20), @s, 105)

아래 항목을 사용해 보십시오.

select Convert(Varchar(50),yourcolumn,103) as Converted_Date from yourtbl
SELECT CONVERT(VARCHAR(10), GETDATE(), 105) + ' ' + CONVERT(VARCHAR(10), GETDATE(), 108)

앞서 말한 것처럼 datetime에는 형식/문자열 표현 형식이 없습니다.

일부 형식을 사용하여 문자열 출력을 변경할 수 있습니다.

문자열을 날짜 시간으로 변환하는 방법

declare @date nvarchar(25) 
set @date = '2011-09-28 18:01:00' 

-- To datetime datatype
SELECT CONVERT(datetime, @date)

제공:

-----------------------
2011-09-28 18:01:00.000

(1 row(s) affected)

원하는 문자열로 변환하기

-- To VARCHAR of your desired format
SELECT CONVERT(VARCHAR(10), CONVERT(datetime, @date), 105) +' '+ CONVERT(VARCHAR(8), CONVERT(datetime, @date), 108)

제공:

-------------------
28-09-2011 18:01:00

(1 row(s) affected)

저는 모든 다양한 변환 구글링에 싫증이 났고, 결국 새로운 변형으로 확장된 유틸리티 기능을 갖게 되었습니다.

CREATE FUNCTION [dbo].[ParseDatetime] (
    @INPUT nvarchar(255),
    @FORMAT nvarchar(255)
)
RETURNS datetime

AS 
BEGIN 


DECLARE @TimePart NVARCHAR(255)
DECLARE @DatePart NVARCHAR(255)
DECLARE @DayPart NVARCHAR(255)
DECLARE @ExDayPart NVARCHAR(255)
DECLARE @MonthPart NVARCHAR(255)
DECLARE @YearPart NVARCHAR(255)
DECLARE @Date DATETIME
--DECLARE @INPUTSTRING NVARCHAR(255)
--SET @INPUTSTRING = '20-10-2019 00:00:00'

--SET @FORMAT = 'D-M-YYYY HH:MM:SS'
IF(@FORMAT = 'D-M-YYYY HH:MM:SS')
BEGIN
    SET @TimePart = RIGHT(@INPUT,LEN(@INPUT)-CHARINDEX(' ',@INPUT))
    SET @DatePart = LEFT(@INPUT,CHARINDEX(' ',@INPUT))
    SET @DayPart = LEFT(@DatePart,charindex('-',@DatePart)-1)
    SET @ExDayPart = RIGHT(@DatePart,LEN(@DatePart)-charindex('-',@DatePart)+1)
    SET @MonthPart = left(@ExDayPart ,charindex('-',@ExDayPart )-1)
    SET @YearPart = right(@ExDayPart ,LEN(@ExDayPart )-charindex('-',@ExDayPart )+1)
    SET @Date = DATEFROMPARTS(@YearPart,@MonthPart,@DayPart) 

END

IF(@FORMAT = 'YYYY-MM-DD')
BEGIN
    SET @DayPart = RIGHT(@INPUT,2)
    SET @MonthPart = RIGHT(left(@INPUT,7),2)
    SET @YearPart = LEFT(@INPUT,4)
    SET @Date = DATEFROMPARTS(@YearPart,@MonthPart,@DayPart) 

END

IF(@FORMAT = 'EXCEL_DAYS_SINCE_1900')
BEGIN
--DECLARE @INPUT NVARCHAR(255)
--SET @INPUT = ' 43554' 
    SET @Date = Dateadd(day,CAST(@INPUT AS INT),datefromparts(1900,1,1))
END


RETURN @Date
END
GO

사용 방법:

SELECT
[DateAsDate] = dbo.[ParseDateTime]([DateAsString], 'YYYY-MM-DD')
FROM [tablename]

언급URL : https://stackoverflow.com/questions/10247050/sql-server-convert-varchar-to-datetime

반응형