0

此时间戳作为字符串保存到表中。查询表时如何将其转换为日期时间类型?

例如:

declare @timestamp as nvarchar
set @timestamp ='20130319092507.000000-000'

我已经尝试convert(datetime, timestamp, *n*)cast(timestamp as datetime)

4

1 回答 1

2

我的第一个建议:修好你的桌子!停止将日期/时间值存储为字符串。不会有什么好事。例如,该列可能具有20130231orHallowe'enThis 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,':')
);
于 2013-03-20T21:22:35.880 回答