此时间戳以字符串形式保存到表中。在查询表时如何将其转换为日期时间类型?
例如:
declare @timestamp as nvarchar
set @timestamp ='20130319092507.000000-000'
我尝试了convert(datetime, timestamp, *n*)
和cast(timestamp as datetime)
答案 0 :(得分:2)
我的第一个建议是:修理你的桌子!停止将日期/时间值存储为字符串。没有什么好处可以来。例如,该列可能包含20130231
或Hallowe'en
或This is not a date
,您现在必须将其过滤掉。除了固有的验证之外,您还失去了执行日期操作的能力。
DECLARE @timestamp VARCHAR(32);
SET @timestamp = '20130319092507.000000-000';
SELECT CONVERT
(
DATETIME,
LEFT(@timestamp, 8) + ' '
+ STUFF(STUFF(SUBSTRING(@timestamp,9,6),3,0,':'),6,0,':')
);