首页 > 解决方案 > 如果在 case 语句中为 null,则将日期时间转换为字符串“待定”

问题描述

在我的视图设置中更改我的列之一时,我有一个问题:

CASE 
   WHEN L.updateTime IS NULL 
      THEN ISNULL(CONVERT(VARCHAR(20), L.updateTime, 120), 'PENDING') 
      ELSE L.updateTime 
END AS updateTime

命令成功,但是当我尝试选择前 1000 名时,却显示错误:

从字符串转换日期和/或时间时转换失败

我已经尝试了所有我能想到的选项,但没有任何效果有什么建议吗?

试过:

CASE 
   WHEN L.updateTime IS NULL 
      THEN 'PENDING' 
      ELSE L.updateTime 
END AS updateTime

CASE 
   WHEN L.updateTime IS NULL 
      THEN CONVERT(VARCHAR(20), 'PENDING') 
      ELSE L.updateTime 
END AS updateTime

CASE 
   WHEN L.updateTime IS NULL 
      THEN ISNULL(L.updateTime, 'PENDING') 
      ELSE L.updateTime 
END AS updateTime

和许多其他人......

我看到了这个现有的问题并尝试了它,但是当我尝试查看我的视图时仍然出现错误。 如果为空值,则将日期时间转换为字符串 - 保持原始日期时间格式

标签: sqldatetimetype-conversion

解决方案


我想通了......我只需要在语句的 else 部分中也转换日期时间......以确保在 case 语句中都采用相同的字符串格式(因为我正在转换为字符串)

感谢@Lamak 的指导!

CASE WHEN L.updateTime IS NULL THEN ISNULL(CONVERT(varchar(20), L.updateTime, 120),'PENDING') ELSE CONVERT(varchar(20), L.updateTime, 120) END AS updateTime

推荐阅读