解析SQL Server中SQL日期转换出错的原因

作者:潇湘隐者 时间:2024-01-15 16:34:17 

开发人员有时候使用类似下面SQL将字符串转换为日期时间类型,乍一看,这样的SQL的写法是没有什么问题的。但是这样的SQL其实有时候就是一个定时 * ,随时可能出现问题(),下面简单对这种情况进行一个简单概括。


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

如果你将连接数据库的登录名的默认语言修改为Aribc,然后去执行上面SQL语句,就会遇到错误,为什么呢?

解析SQL Server中SQL日期转换出错的原因

为什么上面SQL的日期转换出错了呢?其实是因为登录名修改默认语言后,会话对应的date_format变化了,从mdy变成了dmy,所以上面转换就报错了,有时候不报错,但是可能转换成一个错误日期,产生了逻辑错误,这个反而是一个跟糟糕的隐性错误。等你发现的时候,可能已经产生大量错误数据了。


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

解析SQL Server中SQL日期转换出错的原因

关于不同语言的默认date_format,可以使用下面命令查看:


sp_helplanguage 'us_english'

另外一种情况,如果当前会话使用SET命令修改过DATEFORMAT,也会遇到这个错误,如下所示:


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

解析SQL Server中SQL日期转换出错的原因

这种情况就比较复杂了,有可能是某一段SQL里面设置了DATEFORMAT,导致整个会话后面的日期格式全部变化了。所以上面这种SQL的“健壮性”就比较差,在平时就要避免写出这样的SQL,如果你使用这样的SQL,不管是会话的默认语言变化了,还是当前会话的DATEFORMAT变化了,都不会产生错误或逻辑错误。


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

平时遇到这种日期转换,就一定要明确指定转换格式,让其不要受会话的DATEFORMAT变化影响,书写健壮、可靠的SQL语句,下面这两个简单SQL的细微差别,也可判别一个人是否用有书写健壮性SQL的意识!


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

总结

以上所述是小编给大家介绍的解析SQL Server中SQL日期转换出错的原因网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

来源:https://www.cnblogs.com/kerrycode/archive/2020/01/11/12180085.html

标签:SQL,日期,转换
0
投稿

猜你喜欢

  • 关于Python卷积函数详解

    2023-06-14 01:09:27
  • 浅谈tensorflow 中tf.concat()的使用

    2023-07-21 20:24:08
  • 两种mysql对自增id重新从1排序的方法

    2024-01-22 13:07:40
  • 学习createTrackbar的使用方法及步骤

    2021-07-29 20:02:52
  • python使用matplotlib绘制图片时x轴的刻度处理

    2022-05-05 01:38:56
  • Python实现二维数组输出为图片

    2022-10-07 21:49:55
  • 基于AJAX技术提高搜索引擎排名

    2008-01-24 12:45:00
  • Python导入Excel表格数据并以字典dict格式保存的操作方法

    2023-05-25 17:58:37
  • 一篇文章搞懂:词法作用域、动态作用域、回调函数及闭包

    2022-10-01 00:21:05
  • Python+ Flask实现Mock Server详情

    2021-02-11 19:56:28
  • 解决Django后台ManyToManyField显示成Object的问题

    2021-01-06 09:58:21
  • 如何在C++中调用Python

    2021-05-16 23:58:41
  • python数据解析BeautifulSoup爬取三国演义章节示例

    2021-03-21 13:27:27
  • Javascript学习第一季 一

    2008-06-24 17:51:00
  • 如何使用Python实现一个简易的ORM模型

    2021-05-18 19:24:46
  • MySql数据库时间序列间隔查询方式

    2024-01-27 15:23:03
  • 使用python 将图片复制到系统剪贴中

    2021-12-03 22:34:11
  • 深入了解Vue组件七种通信方式

    2024-04-27 16:03:01
  • Python实现将数据框数据写入mongodb及mysql数据库的方法

    2021-10-07 02:24:18
  • python计算一个序列的平均值的方法

    2023-08-25 06:40:17
  • asp之家 网络编程 m.aspxhome.com