如何在 SQL Server中 将日期格式化

嗨,这个SQL Server日期格式在我刚接手一个项目的时候真是让我头疼。
那是2 01 0年,项目在杭州。
表内外的日期格式不同,客户想要不同的格式,这很令人沮丧。

比如这个CONVERTER函数就是个宝。
印象最深的是,有一次,老板突然要求我将报告中的日期格式改为“2 008 年1 2 月2 2 日星期一下午4 :3 9 ”,加上星期几。
当时表中的日期字段是datetime类型,所以我用了CONVERT(varchar, getdate(), 1 05 )。
这个 1 05 恰好是“dd-mm-yyyy hh:mm:ss:mmmAM”。
经过一点处理就完成了。

但这东西必须要慢慢探索。
我对你给我的表格只有部分了解,但我记得我和同事花了很长时间才明白不同的风格值代表什么。
例如,1 1 0 是美国格式“mm/dd/yyyy”,1 03 是英国格式“dd/mm/yy”。
最尴尬的是有世纪数字的,要加1 00,比如1 2 0就是“yyyy-mm-dd hh:mm:ss”,没有世纪的就是1 00,就是“yy-mm-dd hh:mm:ss”。

还有两位数年份的问题,真是让人头疼。
我在2 003 年遇到过一个项目,当时用的是旧系统,年份一改就乱了。
我记得那是2 005 年,我们花了整整一周的时间进行故障排除,才将年份解释截止值更改为1 9 5 0年,否则客户导入的数据将是错误的。

所以,在使用CONVERT时,最好写下年份,而不是两位数,以免再次出错。
当时我写了一个存储过程,所有日期输出都被迫使用四位数字,客户再也没有抱怨过。

你问的代码我都一一试过了。
像select CONVERT(varchar(getdate(), 1 2 0),输出是“2 006 -05 -1 6 1 0:5 7 :4 9 ”,这个1 2 0是ISO标准格式,不带世纪数字。
如果需要包含世纪数字,就用1 3 0,比如“2 006 -05 -1 6 T1 0:5 2 7 :4 9 ,总之,你需要多试几次”。
你可以跑遍这些样式一一看看你想要哪一款。

如何在 SQL Server中 将日期格式化

如何在 SQL Server中 将日期格式化

老实说,我每天都与 SQL 打交道,这项任务就像倒水一样。
你提到的四个步骤是我上周帮助隔壁团队调整系统日志时使用的,非常好用。

打开Microsoft SQL Server Management Studio这一步,您习惯双击桌面快捷方式,但有时系统快捷方式无效,需要到C:\Program Files\Microsoft SQL Server\...才能找到。
我记得上次我找东西的时候,里面有很多带有汉字的文件夹,我都快搞糊涂了。
最后我把路记下来,终于找到了。

第 2 步:设置日期格式。
我通常使用2 3 格式,因为“2 3 ”代表“1 1 001 1 00”,这正是年、月、日格式。
上次我为客户创建报告时,他们坚持使用欧洲格式“YYYY-MM-DD”,所以我将其更改为 1 05 但是,客户认为它太复杂,最终使用了 2 3 我个人没有在这方面运行过任何其他格式,但我熟悉 1 05 和 2 3
步骤 3 格式化时间。
8 格式专门用于表示小时、分钟和秒。
我的印象是,如果您使用“8 ”,您会在秒前得到两个零,例如“1 4 :3 0:05 ”。
有趣的是,当我将表时间导出到Excel时,Excel默认将“08 :3 0:05 ”视为文本,所以我认为SQL可能有错误,但最终我发现这是Excel的错。

第 4 步:合并日期和时间。
2 0格式是一个大杀手。
“YYYY-MM-DD HH:MM:SS”格式现已成为行业标准。
两年前我继承了一个旧项目,数据库中的时间实际上是连续的数字,例如“2 001 01 02 1 03 04 5 ”。
当时我电脑的CPU快要烧坏了。
这不是我的CPU,而是我的头。
改变格式后,老板称赞我的效率。

关于你指出的CONVERT函数,我记得数据在X左右,但我建议检查版本差异。
我使用的2 01 6 版本和2 01 9 语法类似,但不确定2 02 2 年会不会有黑科技。
比如我记得在2 008 R2 尝试过一次GETDATE(),就报错说该函数不存在。
当时我就觉得可能是权限问题。
我查资料发现版本太旧了。

这四个步骤对我来说已经比打字更熟练了,但是当我告诉我的实习生时,他们仍然卡在第 2 步“2 3 ”和“1 05 ”上,这着实让我震惊。
有时我希望 SQL 有一个像 Excel 一样的向导,但后来我想了想。
有了向导,您可能甚至不需要计算机。