Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用Mysql时间戳创建日期范围查询?_Php_Mysql_Sql_Timestamp - Fatal编程技术网

Php 如何使用Mysql时间戳创建日期范围查询?

Php 如何使用Mysql时间戳创建日期范围查询?,php,mysql,sql,timestamp,Php,Mysql,Sql,Timestamp,这里需要一点帮助,我希望你能帮我解决我的简单问题 我有一个由商店数据组成的表。在我的PHP页面中,用户可以注册他们的商店。 在注册中,用户注册其帐户的当天将保存在数据库表中,并将格式化为时间戳 我对此没有异议。在我的后端页面中有一个用于高级搜索方法的表单。在我的表单中,有一个下拉字段,旁边有一个日期选择器,格式为mm/dd/yyyy,因此我有一个2个日期选择器,用于从和到 我的问题是: 我使用PHP中的strottime()函数格式化了datepicker结果。我有一个这样的问题 $query

这里需要一点帮助,我希望你能帮我解决我的简单问题

我有一个由商店数据组成的表。在我的PHP页面中,用户可以注册他们的商店。 在注册中,用户注册其帐户的当天将保存在数据库表中,并将格式化为时间戳

我对此没有异议。在我的后端页面中有一个用于高级搜索方法的表单。在我的表单中,有一个下拉字段,旁边有一个日期选择器,格式为mm/dd/yyyy,因此我有一个2个日期选择器,用于

我的问题是:

我使用PHP中的strottime()函数格式化了datepicker结果。我有一个这样的问题

$query = "SELECT * FROM shops
          WHERE status = '".$status."'
          AND registered BETWEEN ('".$from." AND ".$to."')";
查询的示例输出为:

现在我有了$from和$to的时间戳结果。我如何在mysql中过滤它


好了,就这些。提前感谢。

如果列
已注册
不在UNIX时间,您需要删除时间戳周围的引号,并且需要使用FROM UNIXTIME()。

您需要删除时间戳周围的引号,并且需要使用FROM UNIXTIME()如果列
已注册
不在UNIX时间内。

我认为您需要使用\u UNIXTIME

$query = "SELECT * FROM shops WHERE status = '".$status."' AND registered BETWEEN FROM_UNIXTIME(".$from.") AND FROM_UNIXTIME(".$to.")";

我认为您需要使用来自UNIXTIME的

$query = "SELECT * FROM shops WHERE status = '".$status."' AND registered BETWEEN FROM_UNIXTIME(".$from.") AND FROM_UNIXTIME(".$to.")";

实际上,您应该在PHP中设置适当的
YYYY-MM-DD
字符串格式

基本上,很少有理由在MySQL中使用UNIX时间戳

因此,对每个datepicker to/from值执行如下操作:

$to_datetime = DateTime::createFromFormat('m/d/Y|', $datepicker_to);
$to = $to_datetime->format('Y-m-d');
$from_datetime = DateTime::createFromFormat('m/d/Y|', $datepicker_from);
$from = $from_datetime->format('Y-m-d');
然后在查询中使用它们:

$query = "SELECT * FROM shops
          WHERE status = '".$status."'
          AND registered BETWEEN ('".$from."' AND '".$to."')";

注意,我使用了PHP
DateTime
类,我强烈推荐它作为PHP中日期操作的go-to工具(以及它的相关类,如
DateInterval
DatePeriod
DateTimeZone
,等等)

您实际上应该在PHP中设置适当的
YYYY-MM-DD
字符串格式

基本上,很少有理由在MySQL中使用UNIX时间戳

因此,对每个datepicker to/from值执行如下操作:

$to_datetime = DateTime::createFromFormat('m/d/Y|', $datepicker_to);
$to = $to_datetime->format('Y-m-d');
$from_datetime = DateTime::createFromFormat('m/d/Y|', $datepicker_from);
$from = $from_datetime->format('Y-m-d');
然后在查询中使用它们:

$query = "SELECT * FROM shops
          WHERE status = '".$status."'
          AND registered BETWEEN ('".$from."' AND '".$to."')";
请注意,我使用了PHP
DateTime
类,我强烈推荐它作为PHP中日期操作的go-to工具(以及它的相关类,如
DateInterval
DatePeriod
DateTimeZone
,等等)。

PHP

// $t is the value you got from strtotime()
$FormattedDateTime = date('Y-m-d H:i:s', $t)
PHP

// $t is the value you got from strtotime()
$FormattedDateTime = date('Y-m-d H:i:s', $t)


好的,我试试看。谢谢。好的,我试试。谢谢。这不会有任何帮助,因为仍然需要在unix时间戳和MySQL日期时间格式之间进行转换。是的,我没有意识到。这不会有任何帮助,因为仍然需要在unix时间戳和MySQL日期时间格式之间进行转换。是的,我没有意识到。感谢Mike爵士提供了非常翔实的答案。我现在将尝试并研究此代码以供参考。谢谢。先生,我收到一个错误
致命错误:在
@Jerielle中对非对象调用成员函数format(),似乎DateTime对象的创建不起作用(尽管这应该引发异常)。您能告诉我您将
$datepicker\u传递给
$datepicker\u的值传递给
(无论哪一个发生错误)?你有输入错误吗?好的,我把变量
$convert\u from
$convert\u to
传递给这个
DateTime::createFromFormat
。那么它们有什么值呢?另外请注意,我在上面稍微修改了代码,将DateTime对象的时间部分设置为
00:00:00
,不过这会改变您的错误。感谢Mike爵士提供了非常详细的答案。我现在将尝试并研究此代码以供参考。谢谢。先生,我收到一个错误
致命错误:在
@Jerielle中对非对象调用成员函数format(),似乎DateTime对象的创建不起作用(尽管这应该引发异常)。您能告诉我您将
$datepicker\u传递给
$datepicker\u的值传递给
(无论哪一个发生错误)?你有输入错误吗?好的,我把变量
$convert\u from
$convert\u to
传递给这个
DateTime::createFromFormat
。那么它们有什么值呢?另外请注意,我在上面稍微修改了代码,将DateTime对象的时间部分设置为
00:00:00
,不过这应该会改变您的错误。您实际上需要
Y-m-dh:I:s
实现MySQL兼容性。您实际上需要
Y-m-dh:I:s
实现MySQL兼容性。