我有一个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
个字符。有什么建议??
答案 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)
您可能可以依赖链中的隐式转换,但我更喜欢明确。