ddmmyyyy到SQL中的sql datetime

时间:2012-08-20 09:13:29

标签: sql sql-server

我需要在T-SQL中将nvarchar值转换为datetime。该值采用ddmmyyyy格式,例如23072009

我需要在T-SQL中转换为datetime

我试过

select convert(datetime, '23072009', 103)

但这是错误。

“将nvarchar数据类型转换为日期时间数据类型会导致超出范围的值。”

任何想法

由于

6 个答案:

答案 0 :(得分:6)

将格式重建为yyyymmdd

declare @D varchar(8)
set @D = '23072009'

select cast(right(@D, 4)+substring(@D, 3, 2)+left(@D, 2) as datetime)

答案 1 :(得分:4)

样式103将接受具有dd / mm / yyyy格式的字符串。所以你的代码应该是

declare @date varchar(8)
set @date='23072009'
select convert(datetime,stuff(stuff(@date,5,0,'/'),3,0,'/')  , 103) 

答案 2 :(得分:1)

格式103需要dd/mm/yyyy。 (见here

我认为你不能使用转换来实现它,因为非转换选项具有这种格式。

答案 3 :(得分:1)

您可以像这样定义自定义函数:

CREATE FUNCTION [dbo].[GetCustomDate] (@customDateString NVARCHAR(MAX)) 
RETURNS DATETIME
AS
BEGIN

    RETURN CONVERT(DATETIME, RIGHT(@customDateString, 4) + RIGHT(LEFT(@customDateString, 4), 2) + LEFT(@customDateString, 2))

END

答案 4 :(得分:0)

在SQL Server中将VARCHAR(dd-mm-yyyy)更改为日期(yyyy-mm-dd)。

DECLARE @VarDate VARCHAR(10)
SET @VarDate  = '22-02-1994'

SELECT CONVERT(DATETIME, CONVERT(VARCHAR, CONVERT(DATE, @VarDate, 103), 102))

答案 5 :(得分:-1)

您需要转换字符串而不是int。加上一些引用:

convert(datetime, '23072009', 103)

103获得的字符串如'dd / mm / yyyy'而不是'ddmmyyyy'。