我想将varchar
数据转换为datetime
格式。所以,任何人都可以让我知道。这是列中可用的样本数据。
我尝试了以下内容
SELECT
CASE WHEN [EntryTime] = ''
THEN NULL
ELSE CONVERT(datetime2, [EntryTime])
END [EntryTime]
FROM
table
我得到了这个结果:
但是,我不需要额外的毫秒数。
那么,任何人都可以告诉我如何将其转换为datetime
格式?
对于所有其他尝试,我收到错误
从字符串
转换日期和/或时间时转换失败
那么,有人可以帮助我吗?感谢。
答案 0 :(得分:0)
将亚秒宽度指定为datetime2(7)
select
try_cast(EntryTime as datetime2(7)) by_try_cast
, try_convert(datetime2(7), EntryTime ) by_try_covert
我还建议您使用try_cast()或try_convert()(如果它们可用),如果不是只是删除"尝试_",这些的优点是如果字符串是无效日期,则返回NULL并且不要使查询崩溃。
如果你真的不想要datetime2:
select cast(try_cast(EntryTime as datetime2(7)) as datetime)
答案 1 :(得分:-1)
LEFT和Concat(SQL2012 +)/或使用标准串联 然后转换或转换(格式化)
declare @mytable as table (
entrytime varchar(100)
)
insert into @mytable
values ('2017-08-31 08:23:23'),
('2017-11-10 08:28:37.75000000'),
('2017-10-30 08:23:37.32000000')
select cast(left(concat(entrytime,'.000'),23) as datetime) from @mytable
结果
2017-08-31 08:23:23.000
2017-11-10 08:28:37.750
2017-10-30 08:23:37.320