我需要将一个nvarchar
值转换为datetime
T-SQL 中的值。该值采用ddmmyyyy
格式,例如23072009
我需要datetime
在 T-SQL 中转换。
我试过
select convert(datetime, '23072009', 103)
但它正在抛出错误。
“将 nvarchar 数据类型转换为 datetime 数据类型导致值超出范围。”
任何的想法
谢谢
我需要将一个nvarchar
值转换为datetime
T-SQL 中的值。该值采用ddmmyyyy
格式,例如23072009
我需要datetime
在 T-SQL 中转换。
我试过
select convert(datetime, '23072009', 103)
但它正在抛出错误。
“将 nvarchar 数据类型转换为 datetime 数据类型导致值超出范围。”
任何的想法
谢谢
将您的格式重建为yyyymmdd
.
declare @D varchar(8)
set @D = '23072009'
select cast(right(@D, 4)+substring(@D, 3, 2)+left(@D, 2) as datetime)
样式 103 将接受 dd/mm/yyyy 格式的字符串。所以你的代码应该是
declare @date varchar(8)
set @date='23072009'
select convert(datetime,stuff(stuff(@date,5,0,'/'),3,0,'/') , 103)
您可以像这样定义自定义函数:
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
在 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))
您需要转换一个字符串而不是一个 int。放一些引号:
convert(datetime, '23072009', 103)
并且 103 得到像 'dd/mm/yyyy' 而不是 'ddmmyyyy' 这样的字符串。