不同的Mysql日期结果在网站和PHPmyadmin中
Posted
技术标签:
【中文标题】不同的Mysql日期结果在网站和PHPmyadmin中【英文标题】:Different Mysql date Results On website and in PHPmyadmin 【发布时间】:2021-09-09 13:37:16 【问题描述】:我想选择小于今天日期的行。
在数据库中,我的日期列将数据保存在 unix 时间戳中。
我正在使用 php 和 mysql 进行以下查询。 (这个查询应该显示 1 行,因为我在数据库中有 1 个结果,但它显示了两行。)
SELECT * from products where seller_id ='1' and FROM_UNIXTIME(marketing_end_date,'%Y-%m-%d') < CURRENT_DATE();
但是当我在 phpmyadmin 中运行上面的查询时,它会返回 一行(我想要的结果)。
这是我从 mysql 读取数据的代码。
function get_sellerenddateproducts($admin,$seller_id,$limit_per_page,$start_index)
$this->db->select('*');
$this->db->where(array('seller_id' => $seller_id));
$this->db->where("FROM_UNIXTIME(marketing_end_date,'%Y-%m-%d') <","CURRENT_DATE()");
$this->db->limit($limit_per_page, $start_index);
$this->db->order_by('id','desc');
$query = $this->db->from($this->_table_name)->get();
$arr = $query->result_array();
//echo $this->db->last_query(); die();
return $arr;
问题
为什么相同的查询显示不同的结果?如何得到正确的结果?
【问题讨论】:
你能显示你用来显示信息的代码吗? @NigelRen 对不起,我没听懂你,你想看哪个代码 php 代码或 mysql 函数? 从 SQL 读取数据并将其显示在您的应用程序中的代码。 @NigelRen 添加了代码 @HamzaZafeer 嘿,您是否尝试过回显并检查您在 php 上的选择查询?然后您可以在 phpmyadmin 上运行该查询,看看它是否真的返回 2 个结果 【参考方案1】:MySQL
实际上在内部将 datetime
数据类型字段存储为 UTC。
但是,PhpMyAdmin
使用 server default time
向您显示日期。
使用这一行来检测你的 MySQL 服务器的 TimeZone:
SELECT @@system_time_zone;
例如,尝试在 PhpMyAdmin SQL 语句之前添加这一行:
Set time_zone = '+00:00';
这会将时区设置为 GMT/UTC,因此任何进一步的操作都将使用 GMT。
如果他们现在返回相同的结果,请告诉我 :)
【讨论】:
【参考方案2】:我解决了我的问题,如下所示。
我创建了一个这样的变量。
$todaydate = date('Y-m-d');
并更改我的查询
$this->db->where("FROM_UNIXTIME(marketing_end_date,'%Y-%m-%d') <","CURRENT_DATE()");
到这里
$this->db->where("FROM_UNIXTIME(marketing_end_date,'%Y-%m-%d') <",$todaydate);
那么它给了我正确的结果。
【讨论】:
以上是关于不同的Mysql日期结果在网站和PHPmyadmin中的主要内容,如果未能解决你的问题,请参考以下文章