将字符串转换为datetime

时间:2013-03-20 21:13:50

标签: sql-server tsql datetime casting

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

例如:

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

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

1 个答案:

答案 0 :(得分:2)

我的第一个建议是:修理你的桌子!停止将日期/时间值存储为字符串。没有什么好处可以来。例如,该列可能包含20130231Hallowe'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,':')
);