我對SQL比較陌生,所以請原諒我,如果這是一個愚蠢的問題。現在我一直在嘗試太久以使其發揮作用。將float(YYYY)轉換爲datetime
我在表A中有一列是一個名爲ConstructionYear的浮動列。它有一個簡單的4位數年份(即2010年,2005年,1972年等)。我需要使用這些年來填充表B的YearBuilt日期時間字段。我搜索並搜索並嘗試了各種我在網上找到的convert()和cast()的不同組合,但它不起作用。
我想發生是這樣的:
'2008' - > '2008-01-01 00:00:00.000'
'2005' - >「2005-01- 01 00:00:00.000'
'1986年' - > '1986年1月1日00:00:00.000'
而不是什麼正在發生的事情(使用CAST(ConstructionYear AS DATETIME)
):
'2008' - > '1905年7月2日00:00:00.000'
'2010' - > '1905年7月4日00:00:00.000'
'1984' - > '1905年6月8日00:00:00.000'
編輯:解決方法:cast(convert(varchar,@ConstructionYear) AS DATETIME)
所以我的問題有2個主要原因(比我是新來的SQL等)。
我不知道SQL Server用於datetime的1900年代。因爲1905年的所有日期我都看到了,但我不知道它是在考慮我的2005年並將它算作1900年的日子。
1753年。爲什麼1753年我們可以使用最早的一年?在我發佈我的問題之前,我可能在某個時候使用了正確的語法,但它沒有運行,因爲我的數據在1753年前已經有好幾年了。我認爲錯誤與我的代碼有關。
在這種情況下,Float似乎是一種存儲整數的不好方法。根據字段的填充方式,你可能會稍微偏離需要被截斷或舍入到(小)int或char(4) – automatic 2012-07-12 23:02:05
之前舍入的值。同意,int列會更合適,以免得到一個1984.535在那裏以某種方式 – Ghost 2012-07-12 23:08:37
同意。我不幸地無法控制這些表格的結構,或者它們最初是如何由我們的客戶填充的。 – tkrex 2012-07-12 23:25:44