【问题标题】:MySQL to PostgreSQL: How to modify this SQL query?MySQL 到 PostgreSQL:如何修改这个 SQL 查询?
【发布时间】:2010-12-20 20:37:25
【问题描述】:

我有一个使用MONTH()YEAR() 的MySQL 查询:

SELECT 
  MONTH(created_at) AS month, 
  YEAR(created_at) AS year 
FROM users 
GROUP BY MONTH(created_at), YEAR(created_at) 
ORDER BY YEAR(created_at), MONTH(created_at)

如何修改该查询以使用 PostgreSQL?

【问题讨论】:

    标签: sql mysql postgresql refactoring


    【解决方案1】:
    选择 extract(MONTH from created_at) AS 月, 提取(从 created_at 中提取的年份)AS 年 来自用户 GROUP BY 提取(来自 created_at 的 MONTH),提取(来自 created_at 的 YEAR) ORDER BY extract(MONTH from created_at), extract(YEAR from created_at)

    这是最新的手册
    http://www.postgresql.org/docs/current/static/functions-datetime.html#FUNCTIONS-DATETIME-EXTRACT

    顺便说一句:这是标准 (ANSI) SQL,也适用于 MySQL。

    【讨论】:

      【解决方案2】:

      http://www.postgresql.org/docs/9.0/static/functions-datetime.html

      SELECT 
        EXTRACT(MONTH FROM created_at) AS month, 
        EXTRACT(YEAR FROM created_at) AS year 
      FROM users 
      GROUP BY EXTRACT(MONTH FROM created_at), EXTRACT(YEAR FROM created_at)
      ORDER BY EXTRACT(YEAR FROM created_at), EXTRACT(MONTH FROM created_at)
      

      这种语法应该适用于 PostgreSQL、Oracle 和 Teradata

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-07-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-22
        • 1970-01-01
        • 2021-02-06
        • 2021-01-27
        相关资源
        最近更新 更多