【问题标题】:select date mysql选择日期mysql
【发布时间】:2011-08-29 11:50:18
【问题描述】:

我有这样格式的日期:$originalDate = '2011-05-19T15:39:06Z'

我将它存储在 datetime mysql 字段中。 在 phpMyAdmin 中,日期以这种格式显示:2011-05-19 15:39:06

现在我想选择所有 mysql 条目WHERE date = $originalDate 但没有选择任何内容。

我该怎么做?

干杯, 约尔格

【问题讨论】:

    标签: mysql datetime select


    【解决方案1】:

    转换 $originalDate 以适应 MySQL DATETIME 格式:

    先用 PHP 的 strtotime() 转换成整数格式,再用 PHP 的 date() 转换成 MySQL 格式,然后在 MySQL 查询中使用。

    编辑:代码:

    $mysqlDate = date('Y-m-d h:i:s',strtotime($originalDate));
    

    然后将其用于您的 WHERE 语句:

    WHERE `date` = '$mysqlDate'
    

    【讨论】:

    • 我认为这是正确的方法但是 $mysqlDate = date('Y-m-d h:i:s',strtotime($originalDate));将 2011-05-19T15:39:06Z 变成 2011-05-19 05:39:06
    • @joerg 这是正确的方法。如果您的问题解决了,请接受答案
    • joerg,把它变成 2011-05-19 05:39:06 是你想要的,因为这与你在 PHPmyAdmin 中看到的存储在 MySQL 中的日期时间格式完全相同。这样可以进行直接比较。
    • 没错,但是日期格式有问题:ymd h:i:s将2011-05-19T15:39:06Z变成2011-05-19 05:39:06 所以15 :39:06 变为 05:39:06 Ymd H:i:s 将 2011-05-19T15:39:06Z 变为 2011-05-19 17:39:06 所以 05 变为 17 这可能是时区问题...任何想法
    • 原始日期中的 Z 表示 UTC 时间。您的 php 设置可能设置了默认时区,并将其转移到该时区。我相信您可以使用 date_default_timezone_get() 检查您使用的时区。
    【解决方案2】:

    您需要在用于比较的日期周围加上引号,并且我确定您需要从 $originalDate 中删除“T”和“Z”字符 ...

    例如

    $originalDate = '2011-05-19 15:39:06'
    

    where 子句应该是这样的;

    WHERE `date` = '$originalDate'
    

    注意字段名称周围的反引号 (`),因为“日期”是 MySQL 保留字/函数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-04
      • 2013-03-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多