不同的Mysql日期结果在网站和PHPmyadmin中

Posted

技术标签:

【中文标题】不同的Mysql日期结果在网站和PHPmyadmin中【英文标题】:Different Mysql date Results On website and in PHPmyadmin 【发布时间】:2021-09-09 13:37:16 【问题描述】:

我想选择小于今天日期的行。

在数据库中,我的日期列将数据保存在 unix 时间戳中。

我正在使用 phpmysql 进行以下查询。 (这个查询应该显示 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中的主要内容,如果未能解决你的问题,请参考以下文章

MySQL:按日期获取列行顺序的不同值

PHP MySQL查询在结果中显示错误的日期时间

从日期时间字段Mysql查询中获取日期

如何根据日期列在不同的文本/csv文件中转储一个巨大的mysql表?

MySQL数据库导入成功但不起作用

我的一个网站,mysql数据库里的,加入日期和最后登录日期,是一窜的数字,看不明白啥意思