sql - 在 SQL 中将 DateTime 格式化为 yyyy 和零填充
问题描述
我正在尝试将 DateTime 字段格式化为 yyyyMMdd 格式的字符串。这是提取字段的方式。
BirthYear = CASE WHEN AB.BirthDate 为 NULL THEN 0000 ELSE AB.BirthDate END
字符串生成器看起来像这样
格式(出生年份,'yyyy')
但是,我看到空值输出为 1900。知道如何将空值填充为零吗?
谢谢!
解决方案
我假设这是来自问题中的一些迹象的 SQL Server,在这种情况下,这会将您的生日变为 yyyyMMdd 或 00000000,具体取决于:
SELECT COALESCE(CONVERT(varchar, ab.birthdate, 112), '00000000')
CONVERT to varchar with pattern 112 将日期转换为 yyyyMMdd 格式。如果传入null,则返回null(格式不接受NULL,这就是我没有使用它的原因)。如果返回 null,coalesce 会将其转换为 00000000
00000000 不是日期;没有 "0th of Nonuary 0000" 所以它不是一个 yyyyMMdd 字符串。小心使用
ps; 你得到 1900 的原因是因为那时 SQLS 被编程为认为 0 是日期/天数的数字表示形式。例如,您可以GetUtcDate() + 1.0
获取明天的这个时间,或者GetUtcDate() - 7.0
获取今天、上周的这个时间,或者甚至像GetUtcDate() + 1.0/24 + 17.0/24/60
现在获取的分数加上 1 小时加上 17 分钟,因此数字和日期之间存在相关性,并且 SQLS 被编程考虑那个数字 0 和 1900-01-01 是等价的。-1 是 1899-12-31 等
推荐阅读
- java - 读取整数值并打印介于 0 和输入值之间的所有奇数的平均值的 Java 程序,包括输入值
- c# - Sitecore 日语内容显示问号
- html - 为什么 padding-bottom 不能向上移动元素?
- php - 插入多个相同的输入名称字段codeigniter
- javascript - 如果单击圆圈,如何将圆圈与线垂直连接,它应该填充颜色
- odoo - 数据库从 odoo 9.0 升级到 10.0 - 未满足的依赖关系错误
- ms-access - 有没有办法在表或查询的设计视图中搜索字段名称?
- java - Twitter4j如何从特定时间获取推文
- typescript - 文档类型上不存在属性“密码”
- flutter - 如何从 TextField 中删除内容填充?