佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > 解析SQL Server中SQL日期轉(zhuǎn)換出錯的原因

解析SQL Server中SQL日期轉(zhuǎn)換出錯的原因

熱門標簽:服務外包 呼叫中心市場需求 鐵路電話系統(tǒng) 地方門戶網(wǎng)站 AI電銷 百度競價排名 網(wǎng)站排名優(yōu)化 Linux服務器

開發(fā)人員有時候使用類似下面SQL將字符串轉(zhuǎn)換為日期時間類型,乍一看,這樣的SQL的寫法是沒有什么問題的。但是這樣的SQL其實有時候就是一個定時炸彈,隨時可能出現(xiàn)問題(),下面簡單對這種情況進行一個簡單概括。

SELECT CONVERT(DATETIME, '2020-01-13 6:46:42');

如果你將連接數(shù)據(jù)庫的登錄名的默認語言修改為Aribc,然后去執(zhí)行上面SQL語句,就會遇到錯誤,為什么呢?

為什么上面SQL的日期轉(zhuǎn)換出錯了呢?其實是因為登錄名修改默認語言后,會話對應的date_format變化了,從mdy變成了dmy,所以上面轉(zhuǎn)換就報錯了,有時候不報錯,但是可能轉(zhuǎn)換成一個錯誤日期,產(chǎn)生了邏輯錯誤,這個反而是一個跟糟糕的隱性錯誤。等你發(fā)現(xiàn)的時候,可能已經(jīng)產(chǎn)生大量錯誤數(shù)據(jù)了。

SELECT session_id
  ,program_name
  ,client_interface_name
  ,language
  ,date_format
FROM sys.dm_exec_sessions
WHERE session_id = 53;

關(guān)于不同語言的默認date_format,可以使用下面命令查看:

sp_helplanguage 'us_english'

另外一種情況,如果當前會話使用SET命令修改過DATEFORMAT,也會遇到這個錯誤,如下所示:

SET DATEFORMAT DMY;
GO
SELECT CONVERT(DATETIME, '2020-01-13 6:46:42');

這種情況就比較復雜了,有可能是某一段SQL里面設置了DATEFORMAT,導致整個會話后面的日期格式全部變化了。所以上面這種SQL的“健壯性”就比較差,在平時就要避免寫出這樣的SQL,如果你使用這樣的SQL,不管是會話的默認語言變化了,還是當前會話的DATEFORMAT變化了,都不會產(chǎn)生錯誤或邏輯錯誤。

SELECT CONVERT(DATETIME,'2020-01-13 6:46:42', 120)。

平時遇到這種日期轉(zhuǎn)換,就一定要明確指定轉(zhuǎn)換格式,讓其不要受會話的DATEFORMAT變化影響,書寫健壯、可靠的SQL語句,下面這兩個簡單SQL的細微差別,也可判別一個人是否用有書寫健壯性SQL的意識!

SELECT CONVERT(DATETIME, '2020-01-13 6:46:42');
SELECT CONVERT(DATETIME, '2020-01-13 6:46:42', 120)

總結(jié)

以上所述是小編給大家介紹的解析SQL Server中SQL日期轉(zhuǎn)換出錯的原因,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!

您可能感興趣的文章:
  • MySQL日期函數(shù)與日期轉(zhuǎn)換格式化函數(shù)大全
  • MySQL中日期和時間戳互相轉(zhuǎn)換的函數(shù)和方法
  • 分享Sql日期時間格式轉(zhuǎn)換
  • SQL SERVER 日期格式轉(zhuǎn)換詳解
  • SQLserver中用convert函數(shù)轉(zhuǎn)換日期格式的方法
  • PHP+Mysql日期時間如何轉(zhuǎn)換(UNIX時間戳和格式化日期)
  • SQL學習筆記七函數(shù) 數(shù)字,日期,類型轉(zhuǎn)換,空值處理,case
  • mysql 日期和時間格式轉(zhuǎn)換實現(xiàn)語句
  • sql語句中如何將datetime格式的日期轉(zhuǎn)換為yy-mm-dd格式

標簽:崇左 蘭州 銅川 湘潭 黃山 湖南 仙桃 衡水

巨人網(wǎng)絡通訊聲明:本文標題《解析SQL Server中SQL日期轉(zhuǎn)換出錯的原因》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    子长县| 文水县| 澜沧| 辛集市| 永定县| 明光市| 无锡市| 乃东县| 罗江县| 松潘县| 阜宁县| 富锦市| 普定县| 武宁县| 天峨县| 门源| 抚远县| 淅川县| 甘孜| 新巴尔虎左旗| 南木林县| 乌兰察布市| 汉川市| 若尔盖县| 久治县| 宁夏| 建水县| 克拉玛依市| 清流县| 株洲市| 惠州市| 铜陵市| 尚义县| 札达县| 濮阳县| 沁水县| 邹平县| 车险| 阿巴嘎旗| 壤塘县| 卓尼县|