SQL Server中的时间戳混淆

时间:2014-04-24 21:56:03

标签: sql-server sql-server-2008

我的SQL Server 2008表中有一个TimeStamp (varchar(50),null)列,其名称TimeStamp看起来很容易引起误解。我的意思是它似乎是一个数据类型时间戳,但它是varchar

但它的值类似于201403240004,看起来像是约会。我可以将其转换为日期并使用吗?

阅读online timestamp只是一系列数字,与日期和时间无关。

2 个答案:

答案 0 :(得分:3)

你可以。

假设格式为YYYYMMDDHHmm,一种简单的方法是:

SELECT CONVERT(DATETIME,
   SUBSTRING([TimeStamp],1,4)+'-'+SUBSTRING([TimeStamp],5,2)+'-'
  +SUBSTRING([TimeStamp],7,2)+' '+SUBSTRING([TimeStamp],9,2)+':'
  +SUBSTRING([TimeStamp],11,2)+':00.000')
FROM Table

这将采用这个"时间戳"并首先将其转换为SQL可读的日期时间字符串,例如,它将是2014-03-24 00:04:00.000。然后,它将很容易转换为日期时间。

答案 1 :(得分:2)

是的,您的列应该可以转换为DATETIME,但如果CONVERT()支持该格式,您可能必须自己进行转换。

我无法告诉您示例时间格式究竟是什么。

如果是YYYYMMDDHHMM他们

SELECT CONVERT(DATETIME,LEFT('201403240004',8),112)
      +CONVERT(DATETIME,SUBSTRING('201403240004',9,2)+ ':' + RIGHT('201403240004',2)+':00' ,108)