MySQL/Postgres 兼容 WEEKDAY/DOW

标签 mysql postgresql extract compatibility weekday

我想要一个无需修改即可同时在 MySQL 和 Postgres 上运行的查询(我正在从 MySQL -> Postgres 迁移,理想情况下,我想在测试迁移时在两个数据库上运行完全相同的查询,而不是特定于不同的数据库查询)。

我原来的 MySQL 查询使用 WEEKDAY:

SELECT WEEKDAY('2016-06-24');
+-----------------------+
| WEEKDAY('2016-06-24') |
+-----------------------+
|                     4 |
+-----------------------+
1 row in set (0.00 sec)

我知道 Postgres 有 EXTRACT 但它并不完全相同(并且不适用于 MySQL 上的“dow”):

SELECT EXTRACT(dow FROM '2016-06-24'::date);
date_part 
-----------
     5

是否有一个函数/语句/查询无需修改就可以在 MySQL 和 Postgres 上运行,并且在 MySQL 上具有 WEEKDAY 的行为?

我想避免在 Postgres 上为此行为创建自定义函数。

(实际查询使用列等,所以转换应该不是问题)

最佳答案

我认为没有办法避免用户定义的函数:

create or replace function weekday (_date date)
returns integer as $$
    select extract(isodow from _date)::int - 1;
$$ language sql immutable;

select weekday('2016-06-24');
 weekday 
---------
       4

关于MySQL/Postgres 兼容 WEEKDAY/DOW,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38018927/

相关文章:

audio - 用于从音频流中提取单词(语音)的库?

python - 使用 BeautifulSoup 提取时保留某些 HTML 标签

mysql - 根据 mySQL 中的有效起始日期查找具有今天有效价格的行

php函数清除通过url传递的用户名和密码

mysql - 如何在日期后自动删除记录

node.js - 使用 Loopback 更新所有内容

postgresql - 在从数据库中创建临时表

postgresql - CASE 语句中的多个条件

python - 使用 Python 或 Applescript 从网页中提取文本

php - 使用 mysql 的值创建的 highchart,如何使用 phantomjs 导出它