我在将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
列。是否有必须放入的空间或者我还有其他需要改变的地方吗?
答案 0 :(得分:2)
您的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
从字符转换日期和/或时间时转换失败 字符串。
假设您总是以相同的格式获取此日期戳字符串,您可以使用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