【问题标题】:Different Mysql date Results On website and in PHPmyadmin不同的Mysql日期结果在网站和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 个结果

标签: php mysql date


【解决方案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);
    

    那么它给了我正确的结果。

    【讨论】:

      猜你喜欢
      • 2020-04-18
      • 2016-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-23
      • 2020-02-15
      • 1970-01-01
      相关资源
      最近更新 更多