반응형
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
반응형
'source' 카테고리의 다른 글
C#에서 문자열을 유형으로 변환 (0) | 2023.07.31 |
---|---|
Oracle SQL Developer와 비교하여 더 나은 툴이 있습니까? (0) | 2023.07.31 |
버전 제어 독립 레코드 및 구성을 기반으로 모든 레코드 나열 (0) | 2023.07.31 |
Oracle ID 열 및 선택 항목에 삽입 (0) | 2023.07.31 |
bind 또는 click으로 이벤트 핸들러를 링크에 바인딩하지 않은 경우 jQuery의 click()을 호출하여 링크를 팔로우할 수 있습니까? (0) | 2023.07.31 |