You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Datetime格式化:获取指定格式并将NULL转为空值

解决SQL视图中日期格式转换及NULL值处理问题

嘿,我来帮你搞定这个问题!首先得明确你想要的目标格式具体是什么样的——不过我先把SQL Server里常用的几个日期格式样式列出来,你可以对应着选:

  • 如果想要 MM/DD/YYYY(例如 02/16/2016):使用样式代码101
    CONVERT(varchar(10), datetimefield, 101)
    
  • 如果想要 DD/MM/YYYY(例如 16/02/2016):使用样式代码103
    CONVERT(varchar(10), datetimefield, 103)
    
  • 如果想要不带时间的 YYYY-MM-DD(例如 2016-02-16):使用样式代码23
    CONVERT(varchar(10), datetimefield, 23)
    
  • 如果想要带时间但去掉毫秒的 YYYY-MM-DD HH:MI:SS(例如 2016-02-16 00:00:00):使用样式代码120
    CONVERT(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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 09:10:18