【问题标题】:Remove Time from a Date column从日期列中删除时间
【发布时间】:2018-08-20 07:21:44
【问题描述】:

我们正在将我们的数据库从 Oracle 迁移到 PostgreSQL。

目前我们正在使用 trunc(date) 从日期列中删除时间。
我想知道一个适用于 Oracle 和 postgreSQL db 的通用解决方案?

【问题讨论】:

  • extract 函数适用于 IIRC。见herehere
  • 我们需要一个通用的解决方案,因为数据库更改一次只能在一个环境中完成。所以基本上相同的查询应该在不同的环境和不同的数据库中运行。
  • 你为什么不在 Postgres 中简单地使用date
  • @FedericoklezCulloca 如何使用 extract 提取日期?从示例中我看到只能提取日期的一个元素。
  • 吹毛求疵:trunc() 不会“删除”Oracle 中的时间。它只将其设置为00:00:00

标签: oracle postgresql sqldatatypes


【解决方案1】:

您可以在 postgresql 中将其转换为日期

喜欢这个

SELECT timestamp '2009-12-22 11:01:46'::date
>>> 2009-12-22

【讨论】:

    【解决方案2】:

    您可以在 Postgresql 中创建重载的 TRUNC 函数。

    CREATE FUNCTION TRUNC ( dttm TIMESTAMP ) RETURNS TIMESTAMP 
    AS
    $$
    SELECT DATE_TRUNC('DAY',$1);
    $$
    LANGUAGE SQL
    IMMUTABLE;
    
    select TRUNC(NOW()::timestamp);
    
    12.03.2018 00:00:00
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-23
      • 1970-01-01
      • 2012-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-13
      相关资源
      最近更新 更多