首页 > 解决方案 > SQL 时间到文本

问题描述

如果我将date = '1900-01-01'如何编写CASE语句以返回结果'Enroute'

,case 
   when (cast(Arrival_TS as date)) = '1900-01-01' then cast('Enroute' as text) 
   else cast(Arrival_TS as date) 
 end ArrivalDate

错误:

消息 206,级别 16,状态 2,第 11 行操作数类型冲突:文本与日期不兼容

标签: sqlsql-server

解决方案


一个case表达式只返回一种类型。如果你想'Enroute'作为一个值,类型需要是一个字符串。所以:

(case when (cast(Arrival_TS as date)) = '1900-01-01'
      then 'Enroute'
      else convert(varchar(255), Arrival_TS, 23)
 end) as ArrivalDate

您可以为convert(). 这使用我的首选格式 YYYY-MM-DD。


推荐阅读