我需要在T-SQL中将nvarchar
值转换为datetime
。该值采用ddmmyyyy
格式,例如23072009
我需要在T-SQL中转换为datetime
。
我试过
select convert(datetime, '23072009', 103)
但这是错误。
“将nvarchar数据类型转换为日期时间数据类型会导致超出范围的值。”
任何想法
由于
答案 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'。