Php SQL两个日期范围,带有特定的;“天”;射程内

Php SQL两个日期范围,带有特定的;“天”;射程内,php,mysql,sql,datetime,Php,Mysql,Sql,Datetime,这是我的问题 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 +

这是我的问题

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;
选择*
从表名
其中st.column_日期>='2019-07-11'
和圣柱日<'2019-07-11'+间隔1个月;
  • 给同一日期参数两次
  • 您不需要指定00:00的时间
  • 使用
    +间隔1个月
    获取结束日期。这在年底都能正常工作。它在二月这样的月份也能正常工作,即使是闰年,即使你的开始日期是2020-01-30

  • 请提供示例数据、所需结果,并提供关于您想要做什么的明确信息,而不是
    。似乎
    str_pad($i+1)
    MySQL似乎没有前导零的问题-您可以安全地跳过填充。Wbat是
    $i
    的值吗?