【问题标题】:How to replace Hour/Minutes/Seconds in Snowflake?如何替换雪花中的小时/分钟/秒?
【发布时间】:2022-01-09 00:51:02
【问题描述】:

我有一列包含如下所示的日期时间值:

我想将所有小时/分钟和秒替换为全 0。像这样:

有没有办法做到这一点?

【问题讨论】:

    标签: sql snowflake-cloud-data-platform snowflake-schema


    【解决方案1】:

    试试这个

    SELECT cast(CAST('2021-01-27 14:00:28' AS date) as datetime);
    

    请注意,[DATE_TRUNC][1] 函数在某些 SQL 版本中不可用。

    【讨论】:

      【解决方案2】:

      你可以使用REGEXP_REPLACE:

      select regexp_replace('2021-12-02 01:03:50', ' [0-9]{2}:[0-9]{2}:[0-9]{2}',' 00:00:00') as date;
      

      我明白了:

      2021-12-02 00:00:00
      

      在桌子上使用:

      create or replace table t_time(t varchar(100));
      insert into t_time values ('2021-12-02 01:35:20');
      select t from t_time;
      select regexp_replace(t, ' [0-9]{2}:[0-9]{2}:[0-9]{2}',' 00:00:00'), t from t_time;
      

      【讨论】:

      • 我不会这样做,因为时间戳通常存储在具有 TIMESTAMP 数据类型的列中,而不是 VARCHAR 数据类型。日期或日期时间数据操作最好使用日期和日期时间函数,而不是更适合字符数据操作的正则表达式函数。
      【解决方案3】:

      尝试使用DATE_TRUNC函数:

      SELECT date_trunc('DAY', '2021-01-27 14:00:28'::datetime);
      

      【讨论】:

        【解决方案4】:

        使用强制转换:

        SELECT col_name::DATE
        FROM table;
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-10-01
          • 2022-01-26
          • 2015-05-18
          • 2022-11-29
          • 2014-08-07
          相关资源
          最近更新 更多