例如(不是這樣工作):如何創建用於查詢的硬編碼日期參數?
SELECT * FROM User
WHERE LastActivity > Date(1980,1,1)
凡日期應該使用參數的年,月,日的整數。爲了避免語言環境的麻煩,我明確不想使用「yyyy/mm/dd」或類似的字符串。
我正在使用MSSQL數據庫上的Microsoft SQL Server Management Studio,如果這很重要。
注意:我確信這是微不足道的,但我找不到使用谷歌或SO的解決方案。
例如(不是這樣工作):如何創建用於查詢的硬編碼日期參數?
SELECT * FROM User
WHERE LastActivity > Date(1980,1,1)
凡日期應該使用參數的年,月,日的整數。爲了避免語言環境的麻煩,我明確不想使用「yyyy/mm/dd」或類似的字符串。
我正在使用MSSQL數據庫上的Microsoft SQL Server Management Studio,如果這很重要。
注意:我確信這是微不足道的,但我找不到使用谷歌或SO的解決方案。
爲了避免語言環境的麻煩,我明確不想使用像「yyyy/mm/dd」或類似的 字符串。
爲了避免這種情況,最好的方法是將日期作爲與語言無關的日期,如YYYYMMDD
。這樣,這將是獨立的語言:
SELECT * FROM User
WHERE LastActivity > '19800101';
這工作,謝謝! – Marcel
@Marcel - 隨時歡迎您。 –
使用ISO date format
這是yyyymmdd
SELECT * FROM User
WHERE LastActivity > CONVERT(DATE, (CONVERT(VARCHAR(4), @Year) +
RIGHT('0' + CONVERT(VARCHAR(2), @Month),2) +
RIGHT('0' + CONVERT(VARCHAR(2), @Date),2)))
'@ months'和'@ date'應該填充前導零以便正確轉換,一種方法是使用RIGHT(REPLICATE('0',2)+ CAST(@MONTH AS VARCHAR(2)) ,2)''而不是'CONVERT(VARCHAR(2),@Month)'與'@ date'相同。 –
@MahmoudGamal已經完成。 – Kaf
我一直髮現,大多數數據庫將接受「日 - 月 - 年」作爲一個日期參數,我用它幾乎無處不在。有些人沒有(例如MS/Access),但是SQL/Server有。這種格式已被廣泛接受,但顯然你可能需要使其具體語言。
SELECT * FROM User WHERE LastActivity > '11-Dec-2012';
當它包含月份名稱的*英文*縮寫時,它如何獨立於語言環境?試試這個:'set language spanish;選擇投射('11-Dec-2012'作爲日期時間);'。正如我上面評論的那樣,文檔說ISO 8601格式是明確的;其他格式可能會有不同的解釋。 [如果你使用'SET DATEFORMAT',則ISO 8601甚至可以正確解釋。](http://msdn.microsoft.com/zh-cn/library/ms189491。aspx) – Pondlife
你當然很對。 –
我認爲'轉換'功能可以滿足您的需求。爲了使1980年3月20日,執行以下操作:
Convert(date, '1980-03-20')
你準確的查詢將是:
SELECT * FROM User
WHERE LastActivity > Convert(date, '1980-01-01')
如果您正在使用SQL Server 2012,你可以使用簡單的DATEFROMPARTS功能:
SELECT * FROM User
WHERE LastActivity > DATEFROMPARTS(1980,01,01)
您可以使用Unixtimestamp嗎? – ATaylor
是....................... – Marcel
儘管我不知道您使用哪種編程/腳本語言來進行查詢,但我很漂亮確保它具有將標準日期轉換爲unix時間戳的一些功能。或者簡單地硬編碼時間戳本身。 – ATaylor