sqlserver 比较日期(解析SQL Server中SQL日期转换出错的原因)
sqlserver 比较日期
解析SQL Server中SQL日期转换出错的原因开发人员有时候使用类似下面SQL将字符串转换为日期时间类型,乍一看,这样的SQL的写法是没有什么问题的。但是这样的SQL其实有时候就是一个定时炸弹,随时可能出现问题(),下面简单对这种情况进行一个简单概括。
SELECT CONVERT(DATETIME, '2020-01-13 6:46:42');
如果你将连接数据库的登录名的默认语言修改为Aribc,然后去执行上面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;
关于不同语言的默认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变化了,都不会产生错误或逻辑错误。
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日期转换出错的原因,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对开心学习网网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
- sql数值函数大全(sql中mod函数取余数的用法)
- mysql5.7.20非安装版教程(MySQL5.5 部署的一个问题)
- mysql中FIND_IN_SET函数
- sqlserver分区查询语句(SQL Server中的集合运算: UNION, EXCEPT和INTERSECT示例代码详解)
- sqlserver索引实例(SQL Server索引的原理深入解析)
- mysql binlog模式实际使用(实例验证MySQL|update字段为相同的值是否会记录binlog)
- docker安装mysql后无法连接(Docker 安装 MySQL 并实现远程连接教程)
- 如何找到mysqlroot密码(WDCP管理面板忘记MYSQL ROOT密码及重置后台登录密码的方法汇总)
- mysql未使用索引的查询(如何在mysql进行查询缓存及失败的解决方法)
- mysql出现锁表的原因(导致MySQL做全表扫描的几种情况)
- sql语句去除重复记录(使用SQL语句去掉重复的记录两种方法)
- mysql重复插入数据教程(Mysql避免重复插入数据的4种方式)
- sql function用法(SQL Function 自定义函数详解)
- SQL Server数据类型有哪些
- 常用sql语句大全总结(程序员最实用的 SQL 语句收藏,看完这篇就够了)
- sql中where和having可以同时用吗(SQL where条件和jion on条件的详解及区别)
- 今年考高会很难吗(今年高考会考试吗)
- 盘古开天地 他创造了世界,谁创造了盘古 盘古是伏羲吗(盘古开天地他创造了世界)
- 关于队徽 你了解这些么 二(关于队徽你了解这些么)
- 冬天来了手脚冰凉 真不是因为上辈子你是折翼的天使(冬天来了手脚冰凉)
- 0 1 岁婴儿最强作息指南,照着做养出天使宝宝(01岁婴儿最强作息指南)
- 沪上这16所高校 萌新 礼包开箱 哪一款让你心动(沪上这16所高校萌新)
热门推荐
- C#中static静态变量的用法
- docker配置自己的环境(docker可视化工具Portainer部署并汉化的操作)
- python怎么导入xlsx(用Python将结果保存为xlsx的方法)
- pythonselenium自动化使用教程(selenium python 实现基本自动化测试的示例代码)
- 简单的肖特基二极管电路(两个元祖T1='a', 'b',T2='c', 'd'使用匿名函数将其)
- sql建立视图步骤(SQL 创建、更新和删除视图的方法)
- sql server 新函数(SQL Server分隔函数实例详解)
- 如何清除浮动元素带来的影响(关于清除浮动塌陷的几种方法总结)
- css 圆角切换(CSS实现反方向圆角的示例代码)
- python解析视频源码(基于python实现高速视频传输程序)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9