繁体   English   中英

SQL 两个日期范围,范围内有特定的“DAY”

[英]SQL two date range with specific “DAY” in range

这是我的查询

SELECT * 
FROM tableNAME
WHERE 
st.column_date BETWEEN '" . $_SESSION['selectYear'] . "-" . str_pad($i, 2, "0", STR_PAD_LEFT) . "-11 00:00:00' AND '" . $_SESSION['selectYear'] . "-" . str_pad(($i + 1), 2, "0", STR_PAD_LEFT) . "-10 23:59:59' 

此查询将在“十二月”月份出现问题。 寻求帮助。

看起来$i是一个月数。 看起来你想要这个查询,例如如果$i是 7。

SELECT * 
  FROM tableNAME
 WHERE st.column_date BETWEEN '2019-07-11 00:00:00' 
                          AND '2019-08-10 23:59:59';

正如您所发现的,您指定此日期范围的方式在一年结束时会失败。

对你有用的是这个查询

SELECT * 
  FROM tableNAME
 WHERE st.column_date >= '2019-07-11' 
   AND st.column_date <  '2019-07-11' + INTERVAL 1 MONTH;
  • 两次给出相同的日期参数。
  • 您无需指定 00:00 的时间。
  • 使用+ INTERVAL 1 MONTH获取结束日期。 多年来,这都能正常工作。 即使在闰年,即使您的开始日期类似于2020-01-30 ,它也恰好在 2 月这样的月份正常工作。
  • 而不是<=... 23:59使用<和您要考虑的最后一天的第二天。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM