【问题标题】:Convert day of week name to day of week number Vertica将星期几名称转换为星期几编号 Vertica
【发布时间】:2020-10-30 10:29:09
【问题描述】:
  • 通过这种方式 - SELECT TO_CHAR(NOW(), 'DAY'); 我可以获得星期几的名称(例如星期一)。
  • 使用SELECT dayofweek(NOW());,我可以获得星期几。 (例 1)
  • 问题: 如何将星期几名称转换为星期几号。 (例如星期一 -> 1) SMTH like TO_NUMBER('MONDAY', 'DAY'); --> 1(只是举例,不工作)

【问题讨论】:

    标签: sql database vertica


    【解决方案1】:

    可能case 表达式是最简单的方法:

    (case ? 
        when 'MONDAY' then 1
        when 'TUESDAY' then 2
        when 'WEDNESDAY' then 3
        when 'THURSDAY' then 4
        when 'FRIDAY' then 5
        when 'SATDAY' then 6
        when 'SUNDAY' then 7
     end)
    

    或者数组更简洁:

    array_find(?,
               array['MONDAY', 'TUESDAY', 'WEDNESDAY', 'THURSDAY', 'FRIDAY', 'SATURDAY', 'SUNDAY']
              ) + 1
    

    【讨论】:

    • 以及如何正确使用? F.E. * SELECT * FROM table t where DAYOFWEEK(NOW()) BETWEEN t.startDay AND t.endDay array_find(?, array['MONDAY', 'TUESDAY', 'WEDNESDAY', 'THURSDAY', 'FRIDAY', 'SATURDAY ', '星期天'] ) + 1
    • ? 用于定义星期几的任何表达式或参数。
    • SELECT * FROM table dp where dp.end_day = array_find(array['MONDAY', 'TUESDAY', 'WEDNESDAY', 'THURSDAY', 'FRIDAY', 'SATURDAY', 'SUNDAY'], TO_CHAR(NOW(), 'DAY')); 但得到[Vertica][VJDBC](3457) ERROR: Function array_find(varchar[], varchar) does not exist, or permission is denied for array_find(varchar[], varchar)
    猜你喜欢
    • 2011-01-29
    • 2014-01-11
    • 2021-09-29
    • 2019-05-18
    • 2013-12-31
    • 2020-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多