返回顶部
首页 > 资讯 > 数据库 >为什么你SQL Server中SQL日期转换出错了呢?
  • 417
分享到

为什么你SQL Server中SQL日期转换出错了呢?

为什么你SQLServer中SQL日期转换出错了呢? 2016-02-24 11:02:04 417人浏览 才女
摘要

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

为什么你SQL Server中SQL日期转换出错了呢?

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

 

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

 

 

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

 

clip_image001

 

 

为什么上面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;

 

clip_image002

 

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

 

sp_helplanguage "us_english"

 

 

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

 

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

 

clip_image003

 

 

这种情况就比较复杂了,有可能是某一段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)

您可能感兴趣的文档:

--结束END--

本文标题: 为什么你SQL Server中SQL日期转换出错了呢?

本文链接: https://lsjlt.com/news/3681.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 为什么你SQL Server中SQL日期转换出错了呢?
    开发人员有时候使用类似下面SQL将字符串转换为日期时间类型,乍一看,这样的SQL的写法是没有什么问题的。但是这样的SQL其实有时候就是一个定时炸弹,随时可能出现问题(),下面简单对这种情况进行一个简单概括。   SELEC...
    99+
    2016-02-24
    为什么你SQL Server中SQL日期转换出错了呢?
  • 解析SQL Server中SQL日期转换出错的原因
    开发人员有时候使用类似下面SQL将字符串转换为日期时间类型,乍一看,这样的SQL的写法是没有什么问题的。但是这样的SQL其实有时候就是一个定时炸弹,随时可能出现问题(),下面简单对这种情况进行一个简单概括。...
    99+
    2024-04-02
  • sql日期格式转换函数是什么
    这篇文章主要介绍sql日期格式转换函数是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!sql日期格式转换函数有:1、【Select CONVERT(GETDATE(), 23)】...
    99+
    2024-04-02
  • 怎么用sql语句将时间戳转换为日期
    在SQL中,可以使用DATE函数将时间戳转换为日期。具体的方法如下: SELECT DATE(FROM_UNIXTIME(t...
    99+
    2023-10-24
    sql
  • SQL中日期与字符串怎么互相转换
    这篇文章主要讲解了“SQL中日期与字符串怎么互相转换”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SQL中日期与字符串怎么互相转换”吧!一.Oracle日期...
    99+
    2022-11-30
    sql
  • SQL Server中怎么将行数据转换为列数据
    今天就跟大家聊聊有关SQL Server中怎么将行数据转换为列数据,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。准备工作创建表use [t...
    99+
    2024-04-02
  • SQL 怎么将日期格式转换为常用字符串格式
    SQL 怎么将日期格式转换为常用字符串格式,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。SQL 将日期格式转换为常用字符串格...
    99+
    2024-04-02
  • SQL Server中怎么将二进制转换为字符类型
    这期内容当中小编将会给大家带来有关SQL Server中怎么将二进制转换为字符类型,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。问题描述:在SQL Server 数据库中...
    99+
    2024-04-02
  • SQL Server中怎么将查询结果转换为Json格式
    这篇文章主要讲解了“SQL Server中怎么将查询结果转换为Json格式”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SQL Server中怎么将查询结果...
    99+
    2024-04-02
  • sql server中errorlog错误日志的作用是什么
    sql server中errorlog错误日志的作用是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一 .概述SQL Se...
    99+
    2024-04-02
  • SQL Server解惑——为什么你的查询结果超出了查询时间范围
    废话少说,直接上SQL代码(有兴趣的测试验证一下),下面这个查询语句为什么将2008-11-27的记录查询出来了呢?这个是同事遇到的一个问题,个人设计了一个例子。   USE AdventureWorks2014;GOSELECT...
    99+
    2019-01-06
    SQL Server解惑——为什么你的查询结果超出了查询时间范围
  • 怎么在mysql中将bin-log日志文件转换为sql文件
    本篇文章给大家分享的是有关怎么在mysql中将bin-log日志文件转换为sql文件,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。查看mysq...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作