[英]MySQL query between two dates as timestamps
我一直在尝试从数据库中选择两个默认日期之间的项目:现在和60天之前。 但是,我尝试的所有查询都不起作用。
这是我尝试过的:
$Now = date("Y-m-d");
$Before = date("Y-m-d", strtotime("-60 days");
// This is try1
$sql = "SELECT * FROM myTable WHERE myTimestamp BETWEEN " . $Before . " AND " . $Now;
// This is try2
$sql = "SELECT * FROM myTable WHERE myTimestamp >= " . $Before . " AND myTimestamp <= " . $Now;
我不知道该怎么做。 我看了其他与此问题相同的问题,但是没有提出的解决方案起作用。
请注意:这些查询不会给出错误。 他们只是不检索任何东西。 我还使用了get_defined_vars()
将日期打印到页面上。 这是他们显示的内容:
[Now] => 2016-01-07
[Before] => 2015-11-08
“请注意:这些查询不会给出错误。” -这个" . $Before . " AND " . $Now;
并且您正在使用2016-01-07
和2015-11-08
作为字符串而不是整数 。
与" . $Before . " AND myTimestamp <= " . $Now
另外,这些连字符被解释为MINUS,这是一种数学运算。
即:2016 减 01 减 07等,导致语法错误。
因此,这些内容应改为:
WHERE myTimestamp BETWEEN '$Before' AND '$Now' ";
WHERE myTimestamp >= '$Before' AND myTimestamp <= '$Now' ";
您没有得到任何东西,因为您没有在检查那些语法错误。
有关字符串文字,请查阅http://dev.mysql.com/doc/en/string-literals.html 。
您也没有查询或获取任何东西,我们也不知道您要使用哪个MySQL API进行连接,也不知道您是否已成功连接到数据库。
请教:
您可以根据需要在这里使用mysqli_fetch_array()
或mysqli_fetch_assoc()
,这是一个mysqli_
示例。
查阅手册:
您应该利用MySQL的内置日期/时间功能。
并且不要将它们混合在一起,那样行不通。
根据您用于连接的MySQL API,以下是一些错误处理链接。
脚注:
看来您是MySQL的新手,因此,建议您查看我给您的那些链接,在Stack上找到教程和Q&A。
您还应该考虑使用准备好的语句:
为了帮助防止SQL注入
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.