如何將19 Dec 2012
轉換爲由getdate()2012-12-22
返回的日期格式。 因爲如果我比較2012年12月19日與2012二零一二年十一月十九日年11月19會變成更大的日期,由於按字母順序排列的比較,我需要這個日期比較。T-SQL日期格式
編輯
我不是數據庫設計者爲這個表,是給定的表,因爲它是在工作。否則就不會使用VARCHAR存儲日期
如何將19 Dec 2012
轉換爲由getdate()2012-12-22
返回的日期格式。 因爲如果我比較2012年12月19日與2012二零一二年十一月十九日年11月19會變成更大的日期,由於按字母順序排列的比較,我需要這個日期比較。T-SQL日期格式
編輯
我不是數據庫設計者爲這個表,是給定的表,因爲它是在工作。否則就不會使用VARCHAR存儲日期
試試, 但這會返回一個字符串而不是日期
SELECT convert(varchar, getdate(), 106)
你需要先比較GETDATE
之前將其轉換爲日期。
SELECT convert(date, '19 Dec 2012', 106)
你所設計的數據庫中的一個?如果是,下次您設計時(或者您有時間更改),請使用適當的數據類型。
我想要它的另一種方式.. –
你的意思是? [SQLFiddle Demo](http://sqlfiddle.com/#!3/d41d8/7403) –
'SELECT convert(date,'19 Dec 2012',106)' –
將兩者都轉換爲日期。不要使用字符串來存儲日期值!更好的是,改變你的數據庫模式,並且字符串不匹配問題完全消失。
此外,請注意,Getdate()不會返回一個字符串。它在日期時間數據類型中返回一個日期。 客戶端將其轉換爲字符串表示。
欲瞭解更多信息,請閱讀SQL Server聯機叢書中的「轉換和轉換」。
Convert (datetime, stringdate1)
要修正損壞的數據庫列做到這一點:
ALTER TABLE YourTable ALTER COLUMN BadStringDate datetime;
我有像2012年12月19日類型爲varchar()項列... –
[不良習慣踢:選擇了錯誤的數據類型](http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/12/bad-habits-to-kick-using-the-wrong-data-type.aspx) - 你應該總是使用最合適的數據類型 - 畢竟這就是他們所在的地方!日期應**總是**作爲'DATE'(或'DATETIME')存儲。如果你的表中已經有了'varchar',那麼將* that *轉換爲'DATE'或'DATETIME'進行比較 - 而不是相反! –
SELECT轉換(varchar,getdate(),106)結果2012年12月19日,是不是有一種方法來轉換相反的方式.. –