【问题标题】:Trying to cast date and time in Teradata尝试在 Teradata 中投射日期和时间
【发布时间】:2014-06-24 12:37:30
【问题描述】:

我正在从带有 timestamp(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

但收到一条消息“语法错误,应在单词 EVENT_GMT_TIMESTAMP 和 AS 关键字之间”

也尝试过 concat()。

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

也到小时?

一定有一个函数可以让你像这样选择输出?

我在网络上发现的那些似乎无法在 Teradata 上运行。

我也试过这个:

SELECT CAST(EVENT_GMT_TIMESTAMP AS FORMAT 'YYYYMMDDHHMM')  

但是输出是这样的:

04/18/2014 12:20:44.384000

我需要它是这样的:

04/18/2014 12:20:44

【问题讨论】:

  • 您的问题与 MySQL 有什么关系? MySQL 有一个DATE_FORMAT 函数。如果与 MySQL 无关,请删除标签“mysql”。

标签: sql datetime teradata


【解决方案1】:

我从来没有让时间戳格式像我想要的那样工作,但这将为您提供所需的格式:

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

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

SELECT  current_timestamp(6) AS ts,
ts (FORMAT 'MM/DD/YYYYbhh:mi:ss') (CHAR(19))

【讨论】:

  • 时间戳格式化比你想象的要容易,你只需要添加那个棘手的 COBOL 样式 b 为空白 :-) ts (FORMAT 'MM/DD/YYYYbhh:mi:ss') (CHAR(19))
  • 感谢两位提供的有用信息
【解决方案2】:
CAST(Column AS TIMESTAMP(0))

是一种更好的方法

【讨论】:

  • 不,不是,因为标准 SQL 不允许降低小数精度
猜你喜欢
  • 2020-07-19
  • 2014-06-16
  • 1970-01-01
  • 2012-04-13
  • 2014-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多