【问题标题】:Date_Trunc not function working as expectedDate_Trunc 无法按预期工作
【发布时间】:2019-05-08 11:05:04
【问题描述】:

我试图在 SQL 语句中使用 Date_Trunc for MONTH 函数,但不知何故它不适合我。我正在尝试提取 2019 年 4 月 1 日之后发生的条目。Redshift 数据库中的原始日期格式是我尝试将其分组为月/年存储桶的格式:2019-04-08T00:13:20.000Z

输入

SELECT
    client_id as user_id,
    session_utc as job_date --(format:2019-04-08T00:13:20.000Z)
    FROM  table1 as hits
    WHERE job_date >= DATE_TRUNC('month', 2019-04-01) 
    group by 1,2;

输出

"ERROR: function date_trunc("unknown", integer) does not exist Hint: No function matches the given name and argument types. You may need to add explicit type casts."

我做错了什么?

【问题讨论】:

    标签: sql amazon-web-services amazon-redshift


    【解决方案1】:

    DATE_TRUNC Function - Amazon Redshifttimestamp 作为输入并提供 timestamp 作为输出:

    DATE_TRUNC('datepart', timestamp)
    

    例如:

    SELECT DATE_TRUNC('month', '2019-05-07'::timestamp)
    
    2019-05-01 00:00:00
    

    因此,您的行应为:

    WHERE job_date >= DATE_TRUNC('month', '2019-04-01'::timestamp) 
    

    如果您希望将输出作为日期,请附加 ::date:

    SELECT DATE_TRUNC('month', '2019-05-07'::timestamp)::date
    
    2019-05-01
    

    另外,请注意 date 会在午夜转换为 timestamp。这可能会导致一些比较的差异。例如:

    '2019-05-07 03:03:31.389324+00'::timestamp > '2019-05-07'::timestamp
    

    将评估为True,因为它与一天开始时的午夜进行比较。这与比较两个日期(没有时间戳)不同。

    【讨论】:

      【解决方案2】:

      函数的语法是DATE_TRUNC('datepart', timestamp),看来你需要使用DATE_TRUNC('month', session_utc)(这已经截断到April 2019的第一个日期,即 2019-04-01)

      【讨论】:

      • 是“datepart”的实际值还是我需要填写这个变量?
      • @Tina 对不起,我忘记了那里的文字。应该是month
      【解决方案3】:

      假设您使用的是 Postgres,您需要在日期常量周围加上引号,并且可以转换为正确的类型:

      WHERE job_date >= DATE_TRUNC('month'::text, '2019-04-01'::date) 
      

      Here 是一个 dbfiddle。

      【讨论】:

      • 也不工作。错误:: function date_trunc("unknown", "unknown") is not unique Hint
      • 仍然错误:无效数字,值“-”,位置 4,类型:十进制代码:1207 上下文:2019-04
      猜你喜欢
      • 2013-12-23
      • 2014-12-09
      • 2016-01-13
      • 2020-09-21
      • 2011-08-17
      • 2012-04-29
      • 2021-08-12
      • 2019-02-04
      • 2014-12-02
      相关资源
      最近更新 更多