如何使用Netezza将日期时间转换为日期

时间:2014-01-27 21:52:57

标签: sql datetime netezza

我正在做一些计算,但我的计算已关闭,因为我的日期字段显示时间戳,我只想在我进行计算时才使用日期。我怎样才能忽略会议记录并在计算时使用日期?这就是我所拥有的:

SELECT EF.DSCH_TS,
       CASE WHEN EXTRACT (DAY FROM  EF.DSCH_TS - EF.ADMT_TS)>=0 THEN 'GroupA' END AS CAL
FROM MainTable EF;

3 个答案:

答案 0 :(得分:2)

您可能需要考虑重写案例陈述以返回interval。这将允许更多的灵活性。

        SELECT EF.DSCH_TS,
    CASE 
WHEN  age(date(EF.DSCH_TS),date(EF.ADMT_TS))>= interval '6 days' 
    THEN 'GroupA' END AS CAL
        FROM MainTable EF;

答案 1 :(得分:1)

Netezza只需使用以下功能即可实现内置功能:

SELECT DATE(STATUS_DATE) AS DATE,
       COUNT(*) AS NUMBER_OF_             
FROM X
GROUP BY DATE(STATUS_DATE)
ORDER BY DATE(STATUS_DATE) ASC

这将只返回timetamp的日期部分,并且比使用TO_CHAR()将其转换为字符串更有用,因为它可以在GROUP BYHAVING和其他netezza中使用日期功能。 (TO_CHAR方法不在哪里)

此外,DATE_TRUNC()功能会从时间戳(' Day',' Month,' Year'等等)中提取特定值。不超过其中一个没有多个函数和连接。

DATE()是一个完美而简单的答案,我很惊讶在Stack上看到这么多误导性的答案。我看到TO_DATE很多,这是Oracle的功能,但不适用于Netezza

根据您的查询,假设您对两个时间戳的午夜到午夜之间的日期感兴趣,它将看起来像这样:

SELECT EF.DSCH_TS,
  CASE
    WHEN EXTRACT (DAY FROM (DATE(EF.DSCH_TS) - DATE(EF.ADMT_TS)))>=0 THEN 'GroupA'
  END AS CAL
FROM MainTable EF;

答案 2 :(得分:0)

date_trunc()'day'的第一个参数一起使用。我想这就是你想要的:

SELECT EF.DSCH_TS,
       (case when date_trunc('day', EF.DSCH_TS) >= date_trunc('day', EF.ADMT_TS) THEN 'GroupA' END) AS CAL
FROM MainTable EF;