筛选日期顺序\u日期的日期范围sql问题

vybvopom  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(542)
$sql ="SELECT * FROM orders WHERE order_date >= '$fromdate' AND order_date <= '$todate'";

正如您在上面的查询中所看到的,它指示了所需的从日期到结束日期。只是一个典型的过滤表。

如你所见。
起始日期值为10/29/2018和echo 2018-10-29。
迄今值为10/30/2018和echo 2018-10-30。因为我是这样安排输入日期的。
所以问题是。我从数据库中得到这些值:
2018-10-30下午01:21:29
2018-10-29下午01:21:29
所以正如你看到的,它表示时间。所以我想扫描所有这些值,即使输入日期中只有日期。

e4eetjau

e4eetjau1#

使用 Date() mysql中的函数

$sql ="SELECT * FROM orders WHERE Date(order_date) >= '$fromdate' AND Date(order_date) <= '$todate'";

这将删除比较时的时间。还有 Year , Day , Month 等。。。与varchar相比,使用datetime字段的优势
作为奖励,一个简单的方式来转换您的日期样式是这样的

$date = (new DateTime('10/29/2018'))->format('Y-m-d');

注意 (new DateTime) 括号,这样就不会浪费一个局部变量。我忘了他们在5.5中添加了什么版本的php了,我想,不管怎样,它应该可以在任何“最新”的版本中工作
最后一件事是您应该查看准备好的语句,而不是连接来自最终用户的变量。否则你会被注射棒砸到。对于这个查询,如果您使用日期时间之类的东西来格式化日期,它可能会处理其中的大部分内容,但这不是保护sql的正确方法。

相关问题