我在我的SQL Server 2008表中有一個TimeStamp (varchar(50),null)
列,名稱上看起來有點誤導TimeStamp
。我的意思是它看起來好像是一個數據類型時間戳,但它是varchar
。SQL Server中的時間戳混淆
但它有像201403240004
這樣的值,看起來像日期。我可以將它轉換成日期和使用情況嗎?
閱讀online即timestamp
只是一個數字序列,與日期和時間無關。
我在我的SQL Server 2008表中有一個TimeStamp (varchar(50),null)
列,名稱上看起來有點誤導TimeStamp
。我的意思是它看起來好像是一個數據類型時間戳,但它是varchar
。SQL Server中的時間戳混淆
但它有像201403240004
這樣的值,看起來像日期。我可以將它轉換成日期和使用情況嗎?
閱讀online即timestamp
只是一個數字序列,與日期和時間無關。
可以。
提供該格式是爲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
。然後,它將很容易轉換爲日期時間。
是的,您的列應該可以轉換爲DATETIME,但如果CONVERT()確實支持這種格式,您可能必須自己進行轉換。
我不能告訴你例子什麼時間格式真的是。
如果是爲yyyymmddhhmm他們
SELECT CONVERT(DATETIME,LEFT('201403240004',8),112)
+CONVERT(DATETIME,SUBSTRING('201403240004',9,2)+ ':' + RIGHT('201403240004',2)+':00' ,108)
是的,你不想使用'timestamp',你想要'datetime' – Brad