在派生列ssis中以24小时格式转换日期时间

时间:2016-07-28 14:36:25

标签: sql-server datetime ssis

我有几个日期时间字段,我需要时间为24小时格式。

间隔开始时间 2016-01-04 03.30

我需要它作为

间隔开始时间 2016-01-04 15.30

我在SSIS的Derived Column中开发了这段代码。但我不认为这是正确的:

(DATEPART("Hh",[Interval Start Time]) == 01 ? "13" : 
    (DATEPART("Hh",[Interval Start Time]) == 02 ? "14" :
        (DATEPART("Hh",[Interval Start Time]) == 03 ? "15" :
            (DATEPART("Hh",[Interval Start Time]) == 04 ? "16" : 
            (DATEPART("Hh",[Interval Start Time]) == 05 ? "17" : 
                "")))))

我将不胜感激。

4 个答案:

答案 0 :(得分:0)

只需使用CONVERT

SELECT CONVERT(char(16), [Interval Start Time], 120)

如果您想让时间分隔一个点(.)而不是冒号(:),您可以添加REPLACE

SELECT REPLACE(CONVERT(char(16), [Interval Start Time], 120), ':', '.')

btw,Datetime data type doesn't store display format.

答案 1 :(得分:0)

您似乎只需要为每个日期时间添加12小时,例如

DATEADD(HOUR, 12, [Interval Start Time])

或者,要复制问题中的逻辑,您可以有条件地应用添加:

CASE WHEN DATEPART(HOUR, [Interval Start Time]) <= 5 THEN [Interval Start Time] ELSE DATEADD(HOUR, 12, [Interval Start Time]) END

答案 2 :(得分:0)

如果您尝试将日期时间转换为24小时格式,则可以尝试以下查询。

select CONVERT(VARCHAR(24),getdate(),121);
Or
select CONVERT(datetime,getdate(),121);

OUTPUT : 2016-07-28 20:14:10.937

答案 3 :(得分:0)

试试这个:

(DT_WSTR,4)YEAR([Interval Start Time])+"-"+
RIGHT("0" + (DT_WSTR,2) MONTH([Interval Start Time]),2)+ "-"+ 
RIGHT( "0" + (DT_WSTR,2) DAY([Interval Start Time]),2) +" "+
(datepart("hour",[Interval Start Time]) == 1 ? "13" : 
datepart("hour",[Interval Start Time]) == 2 ? "14" :
datepart("hour",[Interval Start Time]) == 3 ? "15" : 
datepart("hour",[Interval Start Time]) == 4 ? "16" :  
datepart("hour",[Interval Start Time]) == 5 ? "17" : "" )
+"."+RIGHT( "0" + (DT_WSTR,2) datepart("mi",[Interval Start Time]),2)

认为您正在寻找SSIS任务的表达式&#39; Derived Column&#39;并假设“间隔开始时间”&#39;是日期时间。 我希望这有帮助。