我每天在我的 postgres 数据库上运行几个查询,现在我决定学习 MySQL,并决定将我的数据库和查询迁移到 MySQL 服务器。
不幸的是,我无法转换查询的某些部分,尤其是以下部分:
DATE_PART('day', DATE_TRUNC('month', CURRENT_DATE) +
'1 MONTH - 1 DAY'::INTERVAL)::INTEGER
知道如何将其转换为在 MySql 上工作吗?
我每天在我的 postgres 数据库上运行几个查询,现在我决定学习 MySQL,并决定将我的数据库和查询迁移到 MySQL 服务器。
不幸的是,我无法转换查询的某些部分,尤其是以下部分:
DATE_PART('day', DATE_TRUNC('month', CURRENT_DATE) +
'1 MONTH - 1 DAY'::INTERVAL)::INTEGER
知道如何将其转换为在 MySql 上工作吗?
SELECT DAY(LAST_DAY(CURRENT_DATE)) Day
输出:
| DAY |
-------
| 28 |
或人为地应用相同的逻辑
SELECT DAY(DATE_SUB(DATE_ADD(DATE_FORMAT(CURRENT_DATE ,'%Y-%m-01'), INTERVAL 1 MONTH), INTERVAL 1 DAY)) Day
这是工作示例sqlfiddle
我假设你想要当月的最后一天
DATE_TRUNC('month', CURRENT_DATE) --> 将日期减少到(第一天)当月 '1 MONTH - 1 DAY'::INTERVAL --> 再添加一个月并返回一天
MySQL 有LASTDAY(date)
,因此查询将转换为LASTDAY(now())
然后您可以使用DAY(date)
.