sql - 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 行操作数类型冲突:文本与日期不兼容
解决方案
一个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。
推荐阅读
- regex - 正则表达式需要在标签中搜索数字 id
- jmeter - JMeter - 显示 grafana 中的选定步骤
- oracle - 如何使用另一个表的插入触发器更新另一个表的值
- angular - 如何将组件导入Angular中的服务类
- facebook-graph-api - 如何使用 facebook graph api 3.3 版获取好友列表?
- android - 即使在高 API 级别的设备上,Androidx AppCompatButton 看起来也与 Button 不同
- coinbase-api - 如何通过 Coinbase API 进行转换
- arrays - 在 Swift 中用错误的设计结构解析 JSON
- javascript - 使用 Chart js 插件创建类似圆环图的圆弧
- encoding - 这种字体如何以纯文本形式显示?