繁体   English   中英

MySQL查询两个日期之间的时间戳

[英]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-072015-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中使用单引号,双引号和反引号

您也没有查询或获取任何东西,我们也不知道您要使用哪个MySQL API进行连接,也不知道您是否已成功连接到数据库。

请教:

您可以根据需要在这里使用mysqli_fetch_array()mysqli_fetch_assoc() ,这是一个mysqli_示例。

查阅手册:

您应该利用MySQL的内置日期/时间功能。

并且不要将它们混合在一起,那样行不通。

咨询: 我可以在PHP中混合使用MySQL API吗?

根据您用于连接的MySQL API,以下是一些错误处理链接。


脚注:

看来您是MySQL的新手,因此,建议您查看我给您的那些链接,在Stack上找到教程和Q&A。

您还应该考虑使用准备好的语句:

为了帮助防止SQL注入

暂无
暂无

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

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