解析SQL Server中SQL日期转换出错的原因
作者:潇湘隐者 发布时间:2024-01-15 16:34:17
开发人员有时候使用类似下面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日期转换出错的原因网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
来源:https://www.cnblogs.com/kerrycode/archive/2020/01/11/12180085.html


猜你喜欢
- pytorch常用函数torch.randn()torch.randn(*sizes, out=None) → Tensor功能:从标准正态
- 本文针对Python的全局变量实现方法简述如下:先来看下面一段测试程序:count = 0def Fuc(count): pri
- 源代码:# dict1 是 字典 , 用来对应相应元素的下标,我们将文件转成列表,对应的也就是文件的下标,通过下标来找文件元素dict1 =
- 函数:string.join()Python中有join()和os.path.join()两个函数,具体作用如下:join(): 连接字符串
- Python在字符串格式化的两种方式%format%,关于整数的输出%o:oct 八进制%d:dec 十进制%x:hex 十六进制print
- 使用pandas导入csv文件内容1. 默认导入在Python中导入.csv文件用的方法是read_csv()。使用read_csv()进行
- 前言openpyxl是Python下的Excel库,它能够很容易的对Excel数据进行读取、写入以及样式的设置,能够帮助我们实现大量的、重复
- 如果有人问你,GET和POST,有什么区别?你会如何回答?真实案例 前几天有人问我这个问题。
- Deferred对象结构Deferred由一系列成对的回调链组成,每一对都包含一个用于处理成功的回调(callbacks)和一个用于处理错误
- 首先我们利用NodeJs先构建一个基本的服务器。 index.js var requestHandler = require(".
- mysql中用命令行复制表结构的方法主要有一下几种: 1.只复制表结构到新表CREATE TABLE 新表 SELECT * FR
- 不过有一个简单的执行cmd命令方法: SQL> host net user User accounts for \\PC-ATQHJ4
- 我 们知道Express是一个基于NodeJS的非常优秀的服务端开发框架,本篇CSSer将提供express框架的route和route c
- 我就废话不多说了,直接上代码吧!import numpy as npa = [2,4,6,8,10]average_a = np.mean(
- 1.新建site-packages目录,进入到site-packages目录下;2.在site-packages目录下执行pip freez
- 前言SVG可以算是目前最最火热的图像文件格式了,它的英文全称为Scalable Vector Graphics,意思为可缩放的矢量图形。它是
- 一、merge函数用途pandas中的merge()函数类似于SQL中join的用法,可以将不同数据集依照某些字段(属性)进行合并操作,得到
- 上篇文章介绍了什么是进程、进程与程序的关系、进程的创建与使用、创建进程池等,接下来就来介绍一下进程同步及进程通信。进程同步当多个进程使用同一
- Ajax类  
- 前言我们先说一下思路:先对目标网站发送请求,获取html源码,然后对源码里面的所以图片链接进行筛选,然后再次对图片链接发送请求,然后保存。思