sql文本时间

5m1hhzi4  于 2021-07-26  发布在  Java
关注(0)|答案(2)|浏览(276)

如果 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

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

fykwrbwg

fykwrbwg1#

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。

wlwcrazw

wlwcrazw2#

你也可以使用 SQL_VARIANT 具体如下:

SELECT CASE
           WHEN(CAST(@Arrival_TS AS DATE)) = '1900-01-01'
           THEN CAST('Enroute' AS SQL_VARIANT)
           ELSE CAST(@Arrival_TS AS DATE)
       END ArrivalDate;

请检查这里的小提琴。

相关问题