2014-04-24 91 views
0

我在我的SQL Server 2008表中有一個TimeStamp (varchar(50),null)列,名稱上看起來有點誤導TimeStamp。我的意思是它看起來好像是一個數據類型時間戳,但它是varcharSQL Server中的時間戳混淆

但它有像201403240004這樣的值,看起來像日期。我可以將它轉換成日期和使用情況嗎?

閱讀onlinetimestamp只是一個數字序列,與日期和時間無關。

+1

是的,你不想使用'timestamp',你想要'datetime' – Brad

回答

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。然後,它將很容易轉換爲日期時間。

2

是的,您的列應該可以轉換爲DATETIME,但如果CONVERT()確實支持這種格式,您可能必須自己進行轉換。

我不能告訴你例子什麼時間格式真的是。

如果是爲yyyymmddhhmm他們

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