我有一個應用程序以「Thu Sep 22 2016」的格式返回日期,我想查詢已存儲日期爲 的sql服務器數據庫,格式爲「2016-09- 06" 。 SQL服務器是否提供任何內置的轉換功能(特別是3個字母的月份名稱到數字)? 請讓我知道。SQL服務器在查詢前執行日期轉換
回答
SQL Server具有有限的日期轉換支持。這些在documentation中描述。
我想這你想要做什麼:
select convert(date, substring(col, 5, 6) + ',' + right(col, 5), 107)
的想法是你的字符串轉換爲「2016年9月22日」,然後用這個轉換。假設您的國際化格式設置爲英文,那麼這種方法應該可行。
您可以使用FORMAT
例子:
DECLARE @d DATETIME = '10/01/2011';
SELECT FORMAT (@d, 'd', 'en-US') AS 'US English Result'
,FORMAT (@d, 'd', 'en-gb') AS 'Great Britain English Result'
,FORMAT (@d, 'd', 'de-de') AS 'German Result'
,FORMAT (@d, 'd', 'zh-cn') AS 'Simplified Chinese (PRC) Result';
SELECT FORMAT (@d, 'D', 'en-US') AS 'US English Result'
,FORMAT (@d, 'D', 'en-gb') AS 'Great Britain English Result'
,FORMAT (@d, 'D', 'de-de') AS 'German Result'
,FORMAT (@d, 'D', 'zh-cn') AS 'Chinese (Simplified PRC) Result';
試試這個:
SELECT STR_TO_DATE('Sep 22, 2016','%M %d,%Y');
獲取錯誤「STR_TO_DATE」不是公認的內置函數名稱。 「 – user2306856
你正在使用哪個版本的mysql? –
@TK問題說:「* ** SQL服務器**是否提供任何內置函數進行轉換*」 –
你要做的唯一一件事情就是刪除您的字符串的一週部分的一天日期格式。一旦刪除了該字符串,它就是SQL Server的標準日期格式。
Declare @yourTable table (
Id int identity(1,1),
YourDate datetime2
)
Insert into @yourTable values
('2016-09-22'),
('2016-09-16'),
('2016-09-22')
Declare @appDate varchar(100) = 'Thu Sep 22 2016'
Set @appDate = ltrim(substring(@appDate,4,len(@appDate)-3))
select * from @yourTable where cast(YourDate as date) = @appDate
我還將表中的日期時間轉換爲日期以避免在查詢時使用日期時間的時間組件。
謝謝..這有幫助! – user2306856
- 1. 轉換爲varchar日期 - SQL服務器
- 2. SQL服務器 - 日期轉換
- 3. 日期轉換Oracle到SQL服務器
- 4. SQL(服務器)日期轉換
- 5. SQL服務器到Oracle查詢轉換
- 6. SQL服務器Oracle查詢轉換
- 7. 將文本日期轉換爲日期時間SQL服務器
- 8. SQL選擇查詢日期轉換
- 9. SQL執行對特定日期查詢
- 10. 數字轉換成日期時間日期在SQL Server查詢
- 11. 日期轉換錯誤 - MS Access前端查詢SQL後端
- 12. 轉換多個日期格式迄今在SQL服務器
- 13. 從字符串轉換日期類型在SQL服務器
- 14. SQL服務器查詢不顯示每日日期結果
- 15. 在服務器上執行查詢
- 16. 運行sql查詢,該查詢在日期前刪除列
- 17. 轉換日期查詢
- 18. 日期轉換查詢
- 19. 查詢在Sql服務器
- 20. SQL:執行查詢的日期範圍,但日期明智
- 21. 在mssql服務器中定期執行特定查詢
- 22. SQL服務器多個計數日期的子查詢在相同的查詢
- 23. 廣東話執行SQL查詢,與轉換(日期,GETDATE()),C#的WinForms
- 24. SQL服務器:按日期
- 25. 轉換SQL查詢到LINQ得到錯誤的轉換日期
- 26. 無法在遠程服務器上執行SQL查詢
- 27. 直接從iPhone執行SQL查詢到在線服務器
- 28. 在SQL服務器查詢中執行循環操作
- 29. SQL Server 2012查詢未在測試服務器上執行
- 30. 查找'執行SQL任務'組件執行服務器(SQL Server集成服務)
http://www.w3schools.com/sql/func_convert.asp - 可能有用嗎? –
在您的應用程序棧中,調用時總是儘可能早地將字符串表示轉換爲DateTime實例。調用時總是儘可能晚地轉換回字符串。理想情況下,兩種轉換都發生在表示層中。基於這種最佳做法,日期時間應該作爲實際日期時間存儲,您的應用程序應該已將您的字符串值轉換爲日期時間,這使得創建查詢變得簡單,因爲您正在比較類型。 – Igor
感謝您的意見。但不幸的是,我無法控制該應用程序返回日期 - 它基本上是通過執行zfs命令獲得的日期輸出。它由文件系統返回 – user2306856