如何解决在SQL中将DateTime格式化为yyyy并在Null时填充为零
我正在尝试将DateTime字段格式化为yyyyMMdd格式的字符串。这是提取字段的方式。
BirthYear = AB.BirthDate为NULL则为0000的情况 ELSE AB。出生日期 结束
字符串生成器如下所示
FORMAT(BirthYear,'yyyy')
但是,我看到空值输出为1900。您知道如何将零值填充为零吗?
谢谢!
解决方法
我假设这是问题中的几个叙述的SQL Server,在这种情况下,这会使您的生日变为yyyyMMdd或00000000,具体取决于:
SELECT COALESCE(CONVERT(varchar,ab.birthdate,112),'00000000')
使用模式112转换为varchar会将日期转换为yyyyMMdd格式。如果传入null,则返回null(格式不接受NULL,这就是为什么我不使用它的原因)。如果返回null,则合并将其转换为00000000
00000000不是日期;没有“ Nunuary 0000的0分”,因此它不是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,等等
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。