mysql 检索超过3个日历年的订单

wb1gzix0  于 2023-11-16  发布在  Mysql
关注(0)|答案(2)|浏览(168)

我正在寻找正确的查询来检索3个日历年的订单。示例:现在是2023年10月18日,因此我想收集2021年1月1日至2023年10月18日的所有订单。

  1. SELECT *
  2. FROM ps_orders o
  3. WHERE o.date_add >= DATE_ADD(NOW(),INTERVAL -3 YEAR);

字符串
我试着这样做,但它恢复了整整3年,但我希望它是日历。
你有解决办法吗

cuxqih21

cuxqih211#

您需要将日期的下限截断为三年前的1月1日:

  1. SELECT
  2. *
  3. FROM
  4. ps_orders o
  5. WHERE
  6. o.date_add >= CONCAT(YEAR(CURDATE()) - 3, '-01-01') -- Truncates the date to the first of Jan., 3 years ago. Adjust the '3', based on how many years back you need
  7. AND o.date_add <= CURDATE(); -- Optional, in case there are dates in the future.

字符串
注意,MySQL中可能有一个函数可以做到这一点,尽管我不知道。

ghhaqwfi

ghhaqwfi2#

您必须使用间隔,例如BETWEEN

  1. SELECT *
  2. FROM ps_orders o
  3. WHERE o.date_add BETWEEN MAKEDATE(year(DATE_ADD(NOW(),INTERVAL -3 YEAR)),1) AND NOW();

字符串
函数MAKEDATE的工作方式如下

  1. SELECT MAKEDATE(year(DATE_ADD(NOW(),INTERVAL -3 YEAR)),1)


将返回

  1. 2020-01-01

展开查看全部

相关问题