PostgreSQL的date_trunc在mySQL中
最近,我已经熟悉PostgreSQL(使用8.2),并发现date_trunc函数在某些日/月/ etc之间轻松匹配时间戳非常有用.
我相信这个功能的真正有用性来自于它将输出保持为时间戳的格式. 我不得不切换到mySQL(5.0),并找到一些日期功能,而不是比较.提取函数似乎很有用,我发现的日期函数解决了我的一些问题,但是有没有办法复制PostgreSQL的date_trunc? 以下是我如何使用date_trunc将查询时间戳记与包括当前月份在内的最近4个月相匹配的示例,但只有当一个星期已经进入本月时, WHERE date_trunc('month',QUERY_DATE) BETWEEN date_trunc('month',now()) - INTERVAL '4 MONTH' AND date_trunc('month',now() - INTERVAL '1 WEEK') 我不知道如何在mySQL中重新创建这样一个规定.所以,我的问题在一天结束时,是否可以通过尝试复制date_trunc(和如何)在mySQL中完成这种类型的查询,或者是否需要以不同的方式开始查看这些类型的查询,使其工作在mySQL(和如何做的建议)?
事实上, 您在PG中的原始代码: WHERE date_trunc('month',now() - INTERVAL '1 WEEK') 使用EXTRACT: WHERE EXTRACT(YEAR_MONTH FROM QUERY_DATE) BETWEEN EXTRACT(YEAR_MONTH FROM NOW() - INTERVAL 4 MONTH) AND EXTRACT(YEAR_MONTH FROM NOW() - INTERVAL 1 WEEK) 虽然它在功能上是相同的,但是在进行比较之前,这实际上会将日期变成YYYYMM字符串. 另一个选择是使用 WHERE DATE_FORMAT(QUERY_DATE,'%Y-%m-01') BETWEEN DATE_FORMAT(NOW() - INTERVAL 4 MONTH,'%Y-%m-01') AND DATE_FORMAT(NOW() - INTERVAL 1 WEEK,'%Y-%m-01') 另外,请注意,MySQL在处理日期范围方面真的很差,即使在字段被索引时也是如此.如果您不小心,您可能会完成全表扫描. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |