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

SQL Server日期处理:空值显示空字符串,非空仅展示年份

解决方案

针对你在SQL Server中处理tForm.CreatedDate字段的需求,这里提供几种直接可行的写法:

方法1:使用CASE语句(兼容所有SQL Server版本)

CASE 
    WHEN tForm.CreatedDate IS NULL THEN ''
    ELSE CAST(YEAR(tForm.CreatedDate) AS VARCHAR(4))
END AS FormCreatedDate
  • 逻辑清晰,判断字段是否为NULL:是则返回空字符串,否则提取年份并转为字符串类型。

方法2:使用IIF函数(SQL Server 2012及以上版本)

IIF(tForm.CreatedDate IS NULL, '', CAST(YEAR(tForm.CreatedDate) AS VARCHAR(4))) AS FormCreatedDate
  • 是CASE语句的简化写法,更简洁直观。

方法3:结合ISNULL与FORMAT函数

ISNULL(FORMAT(tForm.CreatedDate, 'yyyy'), '') AS FormCreatedDate
  • 利用FORMAT直接格式化年份为字符串,再用ISNULL将NULL结果替换为空字符串。

原语句问题说明

你之前的写法将FORMAT结果转为int,当CreatedDate为NULL时,FORMAT返回NULL,CAST(NULL AS INT)本身是NULL,但如果出现0或1900,大概率是字段存在默认值(如1900-01-01)而非严格NULL,或者后续处理中NULL被隐式转换。上面的写法直接返回字符串类型,严格满足“NULL时显示空字符串”的要求。

内容的提问来源于stack exchange,提问作者Abdul

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 19:52:37