使用COALESCE和转换日期时间字段

时间:2017-10-02 13:08:23

标签: sql-server

我从当前用户那里获得了一些代码,但我无法弄清楚如何转换为Microsoft SQL Server 2014。

,TO_CHAR( COALESCE( TASK.ACT_START_DATE, TASK.TARGET_START_DATE,
TASK.EARLY_START_DATE ), 'MM/DD/YYYY HH24:MI') 
    ||
COALESCE( NVL2( TASK.ACT_START_DATE, ' A', NULL), 
NVL2`enter code here`( TASK.TARGET_START_DATE, ' P', NULL), 
NVL2( TASK.EARLY_START_DATE, ' E', NULL))  AS START_DATE_FMT

必须转换日期字段才能添加" A"," P"或者" E"在约会之后。

有没有办法在SQL Server中使用类似的代码来获取信息?我考虑使用CASE语句来验证Null,但无法正确识别语法。

2 个答案:

答案 0 :(得分:0)

试试这个......

FORMAT( COALESCE( TASK.ACT_START_DATE, TASK.TARGET_START_DATE,TASK.EARLY_START_DATE ), 'MM/dd/yyyy HH:mm') +
CASE WHEN TASK.ACT_START_DATE IS NOT NULL THEN ' A'
    WHEN TASK.TARGET_START_DATE IS NOT NULL THEN ' P'
    WHEN TASK.EARLY_START_DATE IS NOT NULL THEN ' E'
ELSE '' END AS START_DATE_FMT

答案 1 :(得分:0)

这是另一种选择。不要以为你需要一个案例表达。

select 
FORMAT( COALESCE( TASK.ACT_START_DATE, TASK.TARGET_START_DATE,TASK.EARLY_START_DATE ), 'MM/dd/yyyy HH:mm')
+ coalesce(' A' + CONVERT(VARCHAR(19),TASK.ACT_START_DATE,20) 
    , ' P' + CONVERT(VARCHAR(19), TASK_TARGET_START_DATE,20) 
    , ' E' + CONVERT(VARCHAR(19), TASK.EARLY_START_DATE,20))