试图在Teradata中投射日期和时间

Dou*_*Fir 1 sql datetime teradata

我正在从具有时间戳(6)数据类型的表中进行选择.

我想得到日期和时间,如此:

目前数据如下所示: 03/10/2014 21:54:47.690000

我想选择,以便结果如下所示: 03/10/2014 21:54:47

我试过这个:

SELECT CAST(EVENT_GMT_TIMESTAMP AS DATE) || (EVENT_GMT_TIMESTAMP AS TIME)   AS theDate, SUM(VwNIMEventFct.DWELL_MINUTES) AS totalDwellMins
FROM RDMAVWSANDBOX.VwNIMEventFct
WHERE EXTRACT(MONTH FROM EVENT_GMT_TIMESTAMP) = 4
GROUP BY theDate
Run Code Online (Sandbox Code Playgroud)

但收到一条消息"语法错误,期望EVENT_GMT_TIMESTAMP和AS关键字之间的东西"

还试过concat().

有没有更好的方法,而不是连接,选择EVENT_GMT_TIMESTAMP作为日期时间,但到了分钟?

还到了一小时?

必须有一个功能,让你选择这样的输出?

我发现研究网络的东西似乎不适用于Teradata.

我也试过这个:

SELECT CAST(EVENT_GMT_TIMESTAMP AS FORMAT 'YYYYMMDDHHMM')  
Run Code Online (Sandbox Code Playgroud)

但输出是这样的:

04/18/2014 12:20:44.384000
Run Code Online (Sandbox Code Playgroud)

我需要它像这样:

04/18/2014 12:20:44
Run Code Online (Sandbox Code Playgroud)

And*_*rew 5

我从来没有能够像我想要的那样使时间戳格式化工作,但这将获得所需的格式:

SELECT  current_timestamp(6) AS ts,
  ( ts (FORMAT 'MM/DD/YYYY') (CHAR(10)))as DT, 
  cast (ts as time(6)) (char(8)) as tm,
   dt ||' ' ||tm as FormattedDate
Run Code Online (Sandbox Code Playgroud)

或者,有新的和改进的版本,dnoeth的赞美:

SELECT  current_timestamp(6) AS ts,
ts (FORMAT 'MM/DD/YYYYbhh:mi:ss') (CHAR(19))
Run Code Online (Sandbox Code Playgroud)

  • 时间戳格式化比你想象的要容易,你只需要添加那个棘手的COBOL样式`b`为空白:-)`ts(格式'MM/DD/YYYYbhh:mi:ss')(CHAR(19))` (2认同)