SQL Datetime格式化:获取指定格式并将NULL转为空值
解决SQL视图中日期格式转换及NULL值处理问题
嘿,我来帮你搞定这个问题!首先得明确你想要的目标格式具体是什么样的——不过我先把SQL Server里常用的几个日期格式样式列出来,你可以对应着选:
- 如果想要
MM/DD/YYYY(例如02/16/2016):使用样式代码101CONVERT(varchar(10), datetimefield, 101) - 如果想要
DD/MM/YYYY(例如16/02/2016):使用样式代码103CONVERT(varchar(10), datetimefield, 103) - 如果想要不带时间的
YYYY-MM-DD(例如2016-02-16):使用样式代码23CONVERT(varchar(10), datetimefield, 23) - 如果想要带时间但去掉毫秒的
YYYY-MM-DD HH:MI:SS(例如2016-02-16 00:00:00):使用样式代码120CONVERT(varchar(19), datetimefield, 120)
处理NULL值转为空白的需求
你可以用ISNULL()函数把转换后的日期结果和空字符串结合,这样NULL值就会显示为空白。举个完整的例子(以转换为YYYY-MM-DD格式为例):
ISNULL(CONVERT(varchar(10), datetimefield, 23), '') AS formatted_date
你也可以用COALESCE()函数替代ISNULL(),效果是一样的:
COALESCE(CONVERT(varchar(10), datetimefield, 23), '') AS formatted_date
自定义格式的额外方案
如果你需要更灵活的自定义格式(比如带月份缩写、特殊分隔符等),在SQL Server 2012及以上版本中可以使用FORMAT()函数,比如生成DD-MMM-YYYY格式:
ISNULL(FORMAT(datetimefield, 'dd-MMM-yyyy'), '') AS formatted_date
注意:FORMAT()的性能略低于CONVERT(),如果你的视图涉及大数据量查询,优先选择CONVERT()会更高效。
内容的提问来源于stack exchange,提问作者missscripty
相关产品推荐
相关产品推荐

