mysql - DATE 在动态之间

标签 mysql date dynamic

我需要构建一个执行以下操作的 SQL 查询

SELECT  pi.desc,
    pa.nameAddress,
    pi.ref,
    pi.descItem,
    pi.quantity,
    pi.totalDF,
    pi.code,
    pi.codeBL,
    cl.dateShip,    po.dtValidated,     po.supervisorDate,  DATEDIFF(po.supervisorDate, po.dtValidated) AS 'diffValidSupervisor',   DATEDIFF(cl.dtlivr, po.supervisorDate) AS 'diffExpeValid',  year(cl.dtlivr),    month(cl.dtlivr) FROM
    new.proforma_item pi
        INNER JOIN
    old.cdestk_lig cl ON pi.codeCde = cl.codcde INNER JOIN new.proforma po ON po.idProforma = pi.idProforma Inner JOIN new.proforma_address pa ON po.idProforma = pa.idProforma GROUP BY pi.desc, pi.ref, pi.descItem, pi.code, pi.codeBL, cl.dateShip, po.dtValidated, po.supervisorDate, month(cl.dateShip), po.dateInvoice HAVING (po.dateInvoice between '2014-01-01' AND '2014-12-31')

但每年我都必须审查这个更改年份的请求。我想让它动态化,因为手动更改它在我们的架构中简直是疯了。

最好的是:

假设我们是 2015 年 6 月 15 日。我想要一个涵盖这段时间的 between 子句:

2015-01-01 to 2015-05-31

在 finite 中,我需要一个介于当年的第一天和上个月的最后一天之间的时间。

编辑

当我们在 Januray 时,我们必须处理整个过去的一年,而不是当月。 (一月下月处理)

最佳答案

您可以使用 DATE_FORMAT函数构造一年的第一天和LAST_DAY获取上个月的最后一天。

po.dateInvoice between DATE_FORMAT(NOW() - INTERVAL 1 MONTH, '%Y-01-01') AND LAST_DAY(NOW() - INTERVAL 1 MONTH)

关于mysql - DATE 在动态之间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31069263/

相关文章:

php - 如何将从 MySQL 检索到的数据插入到 Android 应用程序中的数组中?

mysql - 使用mysql和flask显示多条记录

mysql - 如何更新 MySQL 中的所有列

c - 2D char 数组或 1D 数组到 char 指针哪个更快?

javascript - 使用 Jquery 动态检查单选按钮是否被选中

mysql:改变大表,磁盘空间问题

java - MySQL 日期时间 <-> Java 日期

java - 仅从时间戳中获取日期

sql - 获取本月第一个日期的值

c - 写入动态内存