5

我需要将一个nvarchar值转换为datetimeT-SQL 中的值。该值采用ddmmyyyy格式,例如23072009

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

我试过

select convert(datetime, '23072009', 103)

但它正在抛出错误。

“将 nvarchar 数据类型转换为 datetime 数据类型导致值超出范围。”

任何的想法

谢谢

4

5 回答 5

8

将您的格式重建为yyyymmdd.

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

select cast(right(@D, 4)+substring(@D, 3, 2)+left(@D, 2) as datetime)
于 2012-08-20T09:17:51.493 回答
6

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

declare @date varchar(8)
set @date='23072009'
select convert(datetime,stuff(stuff(@date,5,0,'/'),3,0,'/')  , 103) 
于 2012-08-21T08:56:00.650 回答
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
于 2012-08-20T09:25:28.820 回答
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))
于 2020-10-05T08:42:19.717 回答
-2

您需要转换一个字符串而不是一个 int。放一些引号:

convert(datetime, '23072009', 103)

并且 103 得到像 'dd/mm/yyyy' 而不是 'ddmmyyyy' 这样的字符串。

于 2012-08-20T09:17:26.420 回答