【问题标题】:Mysql Compare two datetime fieldsMysql比较两个日期时间字段
【发布时间】:2010-11-06 16:19:26
【问题描述】:

我想比较两个日期和时间,我想要所有结果from tbl where date1 > date2

Select * From temp where mydate > '2009-06-29 04:00:44';

但它只是比较日期而不是时间。它给了我今天日期的所有结果集

'2009-06-29 11:08:57'
'2009-06-29 11:14:35'
'2009-06-29 11:12:38'
'2009-06-29 11:37:48'
'2009-06-29 11:52:17'
'2009-06-29 12:12:50'
'2009-06-29 12:13:38'
'2009-06-29 12:19:24'
'2009-06-29 12:27:25'
'2009-06-29 12:28:49'
'2009-06-29 12:35:54'
'2009-06-29 12:36:54'
'2009-06-29 12:49:57'
'2009-06-29 12:58:04'
'2009-06-29 04:13:20'
'2009-06-29 04:56:19'
'2009-06-29 05:00:23'
'2009-06-29 05:04:26'
'2009-06-29 05:08:17'
'2009-06-29 05:26:57'
'2009-06-29 05:29:06'
'2009-06-29 05:32:11'
'2009-06-29 05:52:07'

提前致谢!

【问题讨论】:

  • 那里没有小于 '2009-06-29 04:00:44'; 的结果,所以看来您的代码正在运行,还是我遗漏了什么?
  • 我希望这些日期不早于 '2009-06-29 04:56:19' '2009-06-29 05:00:23' '2009-06-29 05:04' :26' '2009-06-29 05:08:17' '2009-06-29 05:26:57' '2009-06-29 05:29:06' '2009-06-29 05:32:11 ''2009-06-29 05:52:07'
  • 嗯...在那之前你没有任何可见的。看来您是在建议“2009-06-29 11:08:57”出现在“2009-06-29 04:00:44”之前。凌晨 4 点出现在上午 11 点之前,因此您会看到上午 11 点大于凌晨 4 点。再说一次,我错过了什么吗?
  • 2009-06-29 04:00:44' 这是下午 4 点,所以我不想要上午 11 点的记录。我可以得到它们吗
  • 不!下午 4 点是 16:00:00 :) 凌晨 4 点是 04:00:00。

标签: mysql datetime compare field


【解决方案1】:

您的查询显然返回了所有正确的日期,即使考虑到时间。

如果您对结果仍然不满意,请试一试 DATEDIFF,并在两个日期之间寻找阴性/阳性结果。

确保您的 mydate 列是 datetime 类型。

【讨论】:

    【解决方案2】:

    您要订购吗?

    Select * From temp where mydate > '2009-06-29 04:00:44' ORDER BY mydate;
    

    【讨论】:

    • 不,我正在获取今天日期的所有结果集,而不是在我为 ex 指定的日期时间之后:- 我给定的时间是下午 4 点,我得到的是上午 11 点的记录。
    • 你给的时间是凌晨 4 点。
    • Try 'Select * From temp where mydate > '2009-06-29 16:00:44';'
    【解决方案3】:

    您要作为示例显示的查询是:

    SELECT * FROM temp WHERE mydate > '2009-06-29 16:00:44';
    

    04:00:00 是凌晨 4 点,因此您显示的所有结果都在之后出现,这是正确的。

    如果您想在下午 4 点之后显示所有内容,则需要在查询中使用正确的 (24hr) 表示法。

    为了让事情更清楚,试试这个:

    SELECT mydate, DATE_FORMAT(mydate, '%r') FROM temp;
    

    这将显示日期和 12 小时制。

    【讨论】:

      【解决方案4】:

      您可以使用以下 SQL 来比较日期和时间 -

      Select * From temp where mydate > STR_TO_DATE('2009-06-29 04:00:44', '%Y-%m-%d %H:%i:%s');
      

      当我在问题中提到的相同类型的表和字段上使用相同的 SQL 时附加 mysql 输出-

      它应该可以完美运行。

      【讨论】:

      • 太棒了。 Mysql 正在比较字符串而不是日期!从现在开始,我会牢记这一点。很好的答案,点赞!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-10
      • 2019-07-25
      • 1970-01-01
      • 2020-12-16
      • 1970-01-01
      • 2011-04-28
      相关资源
      最近更新 更多