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

Sql 如何使用Netezza将日期时间转换为日期,sql,datetime,netezza,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; 将日期6?因为我想在天数大于0或1、2、3等的情况下进行测试,所以我有很多案例陈述,

我正在进行一些计算,但我的计算已关闭,因为我的日期字段显示时间戳,我只想在进行计算时用作日期。我怎么能在计算时忽略分钟而只使用日期呢?以下是我所拥有的:

SELECT EF.DSCH_TS,
       CASE WHEN EXTRACT (DAY FROM  EF.DSCH_TS - EF.ADMT_TS)>=0 THEN 'GroupA' END AS CAL
FROM MainTable EF;
日期
的第一个参数'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;

<>你可能想考虑重写你的case语句来返回一个。这将允许多一点灵活性

        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;

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 BY
具有
,以及其他netezza日期函数中工作。(其中,
TO_CHAR
方法不适用)

此外,
DATE\u TRUNC()
函数将从时间戳中提取一个特定值(“日”、“月”、“年”等),但在没有多个函数的情况下,只能提取其中的一个值并进行连接

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;

我收到错误:函数“DATE\u TRUNC(TIMESTAMP)”不存在exist@moe . . . 我在第二次调用中省略了第一个参数。谢谢Gordon,这很有效,但我对这个函数有点困惑。如果我希望我的条件是这样的,我将如何修改:where EF.DSCH_TS>6?因为我想在天数大于0或1、2、3等的情况下进行测试,所以我有很多案例陈述,我在这里没有展示。感谢您的澄清…我想您应该将
日期\u trunc()
调用放在
摘录(day from…
)中。您可以告诉我怎么做,因为我无法正确获取它。thanks@moe这应该被标记为问题的答案。将时间戳转换为日期将删除字段的所有时间细节,这正是问题的标题所要做的。