尝试将存储为datetime的nvarchar转换为int

时间:2016-04-07 17:41:21

标签: sql sql-server-2012

我有一个SQL日期字段,存储为nvarchar(max)

示例:4/7/2016 12:50:03 AM

我需要将其转换为int

我有这个:cast(convert(char(8), DateField,112) as int)

但我收到了错误消息

  

转换varchar值时转换失败' 5/22/201'到数据类型int

显然,/不是int个字符。有什么建议??

4 个答案:

答案 0 :(得分:1)

我相信如果你将varchar转换为日期它将起作用 cast(将(char(8),cast(DateField as datetime),112)转换为int)

答案 1 :(得分:0)

您可以replace使用空格填充斜杠:

CAST(REPLACE(CONVERT(char(8),DateField,112),'/','') as int)

答案 2 :(得分:0)

首先,您应该将其转换为DATETIME,然后将其转换为INT。并且不要指望任何特定长度的日期部分 - 取决于月份和日期,它可以是8到10个字符长。

DECLARE @T TABLE (datefield VARCHAR(MAX))
INSERT @T VALUES ('4/7/2016 12:50:03 AM')
SELECT CAST(CONVERT(DATETIME, DateField) AS INT) FROM @T

答案 3 :(得分:0)

我认为您需要一系列转化:字符串 - > datetime - > string - > INT

cast(convert(char(8), convert(datetime, DateField, 101), 112) as int)

您可能可以依赖链中的隐式转换,但我更喜欢明确。