语法区别
3. 关于日期、时间的提取
将 timestamp
类型的数据,把小时、分钟等提取出来。
--mysql
SELECT hour(time) AS timeHour
FROM cart
WHERE ......;
--PostgreSQL (holo) 方法一
SELECT DATE_PART('hour', time) as timeHour
FROM cart
WHERE ......;
--PostgreSQL (holo) 方法二
SELECT EXTRACT(hour FROM time) AS timeHour
FROM cart
WHERE ......;
其中DATE_PART(field, source)
与 extract()
两者等效,第一个参数可选以下内容:
* century
世纪
* decade
年份 ÷ 10
* year
年
* month
对于timestamp值,它是一年里的月份数(1-12);对于interval值, 它是月的数目,然后对 12 取模(0-11)
* day
日
* hour
小时
* minute
分钟
* second
喵
* microseconds
秒域(包括小数部分)乘以 1,000,000 。请注意它包括全部的秒。
* milliseconds
秒域(包括小数部分)乘以 1,000 。请注意它包括完整的秒。
* dow
每周的星期几 , 星期日(0),星期六(1)
* doy
一年的第 x 天
* epoch
* isodow
* isoyear
* timezone
* timezone_hour
* timezone_minute
GROUP BY
将MySQL中包含GROUP BY
的代码,直接迁移到PGSQL中,有概率会遇到这个问题:
[42803] ERROR: column "table.colName" must appear in the GROUP BY clause or be used in an aggregate function
错误:"cart.id"列 必须出现在GROUP BY子句中或在聚合函数中使用