【问题标题】:how to get day of week from date in apache drill sql?如何从 apache Drill sql 中的日期获取星期几?
【发布时间】:2019-01-27 17:22:12
【问题描述】:

我正在使用连接到 apache Drill sql 的 dbeaver,试图获取星期几。

例如对于'1/27/2019',星期几是1,将星期日视为一周的第一天。

示例 2:'1/28/2019',输出:2

【问题讨论】:

    标签: sql apache-drill datepart dbeaver sql-date-functions


    【解决方案1】:

    在 Apache Drill SQL 中,您应该可以使用the TO_CHAR() data type conversion method。格式说明符'e' 应该是您需要的:

    TO_CHAR(my_date_col, 'e')
    

    如果您的日期存储为字符串,您需要先将它们转换为日期,例如使用TO_DATE

    TO_CHAR(TO_DATE(my_string_col, , 'MM/dd/yyyy'), 'e')
    

    【讨论】:

    • 谢谢你,它的工作,有没有办法在 TO_CHAR 中提到一周的开始日期。选择 to_char(current_timestamp,'e') 它返回 7,因为星期日是一周的最后一天。我们如何才能将值设为 1,说明星期日是一周的开始日
    • @Surya 我认为没有标准选项,我在文档中找不到它。
    • 您必须汇总自己的逻辑,例如:CASE WHEN TO_CHAR(my_date_col, 'e') = 1 THEN '7' ELSE TO_CHAR( TO_NUMBER( TO_CHAR(my_date_col, 'e'), '#' ) + 1, '#' ) END
    【解决方案2】:

    TO_CHAR(date_col, 'e') 将返回数字。例如,如果是星期一的工作日,则返回 1。以此类推...

    TO_CHAR(date_col, 'E') 将返回字符。例如,如果是星期一的工作日,它将返回星期一。等等……

    确保您的日期列是日期格式,如果不是首先使用 TO_DATE() 将其转换为日期格式,然后执行上述步骤。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-02
      相关资源
      最近更新 更多