当前位置: 首页 > 知识库问答 >
问题:

mysql“Between and”查询,包括第一天和最后一天

戴瑞
2023-03-14

我有一个查询,我用它从数据库中提取数据,但我发现它错过了第一天和最后一天。在本例中,它跳过了将“scadenze”设置为“01-05-2021”的记录,而遗漏了将“scadenze”设置为“31-05-2021”的记录。这几天我怎么也能融入?

这是我使用的查询:

$anno = date('Y'); // CURRENT YEAR
$mese = (date('m')+1); // THE MONTH THAT I NEED (THE NEXT ONE)

// FIRST DAY OF THE MONTH

$giornoinizio = '01';
$a = '';
$a .= $anno . '-' . $mese .'-' . $giornoinizio;

// LAST DAY OF THE MONTH

$giornofine = cal_days_in_month(CAL_GREGORIAN,$mese,$anno);
$b = '';
$b .= $anno . '-' . $mese .'-' . $giornofine;

$sql = "SELECT * FROM condominio WHERE scadenze BETWEEN '$a' AND '$b' ORDER BY scadenze ASC";

这个查询“有效”,但它删除了第一天和最后一天。我怎样才能包括他们?

谢谢

共有1个答案

蔚楷
2023-03-14

你让自己的生活变得很艰难。

您可以简单地使用这个日期代码获取2个日期,然后将date()函数添加到时间戳中。

$a = date('Y-m-d', strtotime('first day of +1 month'));

$b =  date('Y-m-d', strtotime('last day of +1 month'));

$sql = "SELECT * FROM DATE(condominio) WHERE scadenze BETWEEN '$a' AND '$b' ORDER BY scadenze ASC";

但是这种数据连接到查询中是一种不好的习惯,如果进入它,会鼓励您进行SQL注入攻击。即使您正在转义输入,它也不安全!您应该始终在mysqli_pdoAPI中使用准备好的参数化语句,而不是将用户提供的值连接到查询中。

不确定您使用的是哪个扩展,所以我只能建议使用PDO解决方案

$a = date('Y-m-d', strtotime('first day of +1 month'));
$b =  date('Y-m-d', strtotime('last day of +1 month'));

$sql = "SELECT * FROM DATE(condominio) 
        WHERE scadenze BETWEEN :a AND :b 
        ORDER BY scadenze ASC";
$stmt = $con->prepare($sql);
$stmt->execute([':a'=>$a, ':b'=>$b]);

$result = $stmt->fetchAll();

foreach ( $results as $row ){
    // process each row
}
 类似资料:
  • 问题内容: 我有以下形式的查询: 我很难确定上个季度的正确日期。因此,假设当前日期是 7月1日 ,即第三季度,我想将 4月1日 作为FIRST,将 6月30日 作为最后 一个季度 (即第二季度)的最后一天。 谷歌搜索了一下,找到了很多解决方案,但是每个解决方案都涵盖了SQL Server和可用的时髦方法,在我们的ORACLE数据库(Oracle 10g和11g)上不可用。 哦,是的,我还需要能够将

  • 问题内容: 我正在设法迅速获得每月的第一天和最后一天。 到目前为止,我有以下内容: 但是我不确定如何获得最后的约会。我是否缺少内置方法?显然,它必须考虑leap年等。 问题答案: 您只需使用以下命令即可获得每月的第一天 要获得该月的最后一天,请添加一个月并减去一天: 或者,使用为您提供开始时间和月份长度的方法: 对于月份的最后一天的日期,请加上月份的长度减去一秒: 为Swift5更新:

  • 问题内容: 亲爱的专业人员, 我有一个查询来获取本月的第一天和最后一天,但是我对本月第一天的时间戳有疑问。 自2015年2月起,我希望获得以下结果: @LastDOM是正确的,但是我没有得到@FirstDOM的时间戳部分的零,我得到了正确的日期,但是是运行脚本的时间。假设是上午8:50,我得到: 修复此小故障的最佳方法是什么? 问候, 缺口 问题答案: 将@FirstDOM转换为如下形式: 我希望

  • 问题内容: 我正在查询以获取最近30天每天从数据库中获取的构建数量。但是现在已经需要标记没有构建的日子。 在我的WHERE子句中,我使用Submittime来确定是否有构建,如何修改它以包括COUNT(id)== 0但仅在最近30天内的天。 原始查询: 我尝试过的 问题答案: 您需要一个日期表,然后左联接到builds表。 像这样的东西:

  • 问题内容: 我正在寻找获取上个月第一天和最后一天的最佳方法。我使用它们进行SQL查询以获取上个月的统计信息。 我认为这是最好的方法,更优化但又不那么全面,有人有另一种方法可以做到这一点吗? 谢谢!! 问题答案: 在PHP 5.3中,您可以使用类:

  • 如何以moment.js中的以下格式获取当月的第一天和最后一天和时间: 2016-09-01 00:00