我在将转换NVARCHAR(MAX)
为DateTime
数据类型时遇到问题。我检查了空值和空格。我不太确定为什么它没有转换。可能是因为他们采用这种方式将数据存储在其中了。如果有人可以告诉我,我必须做出些什么才能使其正常工作。
DateStamp
------------------
2015-10-1413:09:17
2015-10-1413:09:17
2015-10-1413:09:19
2015-10-1413:09:22
2015-10-1413:09:23
2015-10-1413:09:27
2015-10-1413:09:27
DateStamp
是您所看到的列。是否有必须放置的空间或我需要更改的其他内容?
您的NVARCHAR(MAX)
字符串缺少空格。例如'2015-10-1413:09:17'
应该'2015-10-14 13:09:17'
如您所述,转换为时将无法使用DATETIME
:
DECLARE @date NVARCHAR(MAX) = '2015-10-1413:09:17'
BEGIN
SELECT CAST(@date as datetime)
SELECT CONVERT(datetime,@date)
END
从字符串转换日期和/或时间时转换失败。
假设您总是以相同的格式获取此datestamp字符串,则可以使用SUBSTRING
该字符串添加所需的空格,然后将其转换为DATETIME:
DECLARE @date NVARCHAR(MAX) = '2015-10-1413:09:17'
BEGIN
SELECT (SUBSTRING(@date,1,10)+' '+SUBSTRING(@date,11,15)) as FormattedDate -- 2015-10-14 13:09:17
SELECT CONVERT(datetime,(SUBSTRING(@date,1,10)+' '+SUBSTRING(@date,11,15)))
END -- Returns : 2015-10-14 13:09:17.000
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句