加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql-server – 在SQLServer中保存日期

发布时间:2020-12-12 06:44:13 所属栏目:MsSql教程 来源:网络整理
导读:我有一个遗留应用程序,其中输入是一个日期字符串,即: 06/12/2009 输入的格式总是一个字符串,并且是一致的,它总是dd / mm / yyyy 目前,遗留应用程序只是在DateTime字段中插入它.显然,如果服务器的本地化文化设置发生变化,我们就会出现错误. 两个问题: 一:
我有一个遗留应用程序,其中输入是一个日期字符串,即:

06/12/2009

输入的格式总是一个字符串,并且是一致的,它总是dd / mm / yyyy

目前,遗留应用程序只是在DateTime字段中插入它.显然,如果服务器的本地化文化设置发生变化,我们就会出现错误.

两个问题:

一:

在这种情况下,最安全的方法是在SQLServer中存储日期?

是否有一种格式,无论日期和月份的顺序如何,都将始终正确解释?

二:

什么设置确切地决定了SQLServer DB的文化,它是OS设置,还是该DB的设置,或者是什么?

干杯

解决方法

格式YYYY-MM-DD是明确的,这意味着SQL Server不会混淆月份
和将字符串值转换为DATETIME的日期. (我从未遇到使用四位数年份使用该格式进行隐式转换的问题.)

在SQL Server中存储日期值的“最安全”(也是最方便)的方法是使用DATETIME数据类型.

在DATETIME和字符串之间进行转换时,使用CONVERT函数显式指定输入和输出格式.

有关CONVERT样式参数值的SQL Server 2005文档:

http://msdn.microsoft.com/en-us/library/ms187928(SQL.90).aspx

要将字符串表示形式转换为DATETIME数据类型:

select CONVERT(datetime,'2009-06-03',20)

第一个参数是要转换的数据类型,第二个参数是要转换的表达式,第三个参数是样式.

(样式20是ODBC规范格式=’YYYY-MM-DD HH:MI:SS'(24小时制)

[跟进]

要将DATETIME表达式(例如,getdate()转换为’YYYY-MM-DD’格式的VARCHAR:

select CONVERT(varchar(10),getdate(),20)

请注意,指定varchar(10)只能获得etnire’YYYY-MM-DD HH:MM:SS’格式的前10个字符.

[/跟进]

至于什么决定了默认格式,这将是研究.我们通过指定格式来避免默认格式引起的问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读