【问题标题】:Remove milliseconds in SQL commands删除 SQL 命令中的毫秒数
【发布时间】:2014-04-05 13:05:03
【问题描述】:

有这种 SQL 语句,我如何从“date_created”列中删除毫秒?

SELECT sales.id,
       sales.filename,
       account.description customer,
       sales.uploaded,
       sales.date_created
  FROM account
       JOIN salesStore sales
            ON sales.customer_id = account.id
 WHERE sales.date_created::date BETWEEN '2014-02-27' 
                                    AND '2014-03-01'
ORDER BY 
       sales.date_created DESC

【问题讨论】:

  • 您是否要完全删除毫秒或时间分量?您的 where 子句似乎表明您只对日期感兴趣。
  • @sam yi - 只有我想从我的 date_created 列中删除的毫秒数。
  • sales.date_created 列的原始数据类型应该在您的问题中。

标签: sql postgresql timestamp


【解决方案1】:

DATE_FORMAT(sales.date_created, '%Y-%m-%d')MySQL

对于其他 sql 引擎,它可能会有所不同,您必须准确说明您使用的是哪个。

编辑:添加%H:%i:%s 以保留日期组件。

更新

对于 PostgreSQL,请参阅 PostgreSQL's Documentation for Data Type Formatting Functions[SO] How to compare dates in datetime fields in Postgresql?,其中提供了多个日期比较选项。

【讨论】:

    【解决方案2】:

    试试这个

     DATE_TRUNC('second', sales.date_created);
    

    请参阅DATE_TRUNC 的文档。

    postgresql doc

    【讨论】:

      【解决方案3】:

      试试这个。这将从日期中删除毫秒部分。

      DATEADD(ms, -DATEPART(ms, date), date)
      

      【讨论】:

        【解决方案4】:

        The manual:

        timetimestampinterval 接受可选的精度值 p 它指定保留在 秒字段。默认情况下,对精度没有明确的限制。 对于timestampintervalp 的允许范围是从 0 到 6 类型。

        您可以强制转换为timestamp(0)(或timestamptz(0))以删除小数秒:

        date_created::timestamp(0)
        

        四舍五入到整秒 - 而date_trunc() 截断

        【讨论】:

          猜你喜欢
          • 2015-10-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-08-26
          • 2011-05-23
          • 2017-01-04
          • 2012-02-19
          • 2011-09-18
          相关资源
          最近更新 更多