当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《MySQL在两个日期之间的查询作为时间戳》经验,为你挑选了1个好方法。

我一直在尝试从我的数据库中选择两个默认日期之间的项目:现在和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

Funk Forty N.. 7

"请注意:这些查询不会出错." - 这" . $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中使用单引号,双引号和反引号

您也没有查询或获取任何内容,我们不知道您使用哪个MySQL API连接,或者您是否成功连接到数据库.

请教:

http://php.net/manual/en/mysqlinfo.api.choosing.php

http://codular.com/php-mysqli(快速教程)

你可以使用mysqli_fetch_array()mysqli_fetch_assoc()取决于你想在这里做什么,这就是一个mysqli_例子.

查阅手册:

http://php.net/manual/en/ref.mysql.php

http://php.net/manual/en/book.mysqli.php

http://php.net/manual/en/book.pdo.php

MYSQL - 检索日期之间的时间戳

https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html

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

并且不要将它们混合在一起,它不会那样工作.

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

根据您用来连接的MySQL API,这里有一些错误处理链接.

http://php.net/manual/en/function.mysql-error.php(MySQL_)

http://php.net/manual/en/mysqli.error.php(MySQLi_ )

http://php.net/manual/en/pdo.error-handling.php(PDO)


脚注:

看来你是MySQL新手,因此我建议你看看我给你的那些链接,在Stack上找到教程和问答.

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

https://en.wikipedia.org/wiki/Prepared_statement

为了帮助反对SQL注入



1> Funk Forty N..:

"请注意:这些查询不会出错." - 这" . $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中使用单引号,双引号和反引号

您也没有查询或获取任何内容,我们不知道您使用哪个MySQL API连接,或者您是否成功连接到数据库.

请教:

http://php.net/manual/en/mysqlinfo.api.choosing.php

http://codular.com/php-mysqli(快速教程)

你可以使用mysqli_fetch_array()mysqli_fetch_assoc()取决于你想在这里做什么,这就是一个mysqli_例子.

查阅手册:

http://php.net/manual/en/ref.mysql.php

http://php.net/manual/en/book.mysqli.php

http://php.net/manual/en/book.pdo.php

MYSQL - 检索日期之间的时间戳

https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html

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

并且不要将它们混合在一起,它不会那样工作.

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

根据您用来连接的MySQL API,这里有一些错误处理链接.

http://php.net/manual/en/function.mysql-error.php(MySQL_)

http://php.net/manual/en/mysqli.error.php(MySQLi_ )

http://php.net/manual/en/pdo.error-handling.php(PDO)


脚注:

看来你是MySQL新手,因此我建议你看看我给你的那些链接,在Stack上找到教程和问答.

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

https://en.wikipedia.org/wiki/Prepared_statement

为了帮助反对SQL注入

推荐阅读
郑谊099_448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有