【问题标题】:Get Minimum DateTime in MySQL [duplicate]在MySQL中获取最小日期时间[重复]
【发布时间】:2011-02-25 12:05:54
【问题描述】:

我想要来自 MySql 数据库的最少数据。在我的数据库中,列的数据类型是 VARCHAR,我插入数据就像“2011-03-01 09:00”(yyyy-MM-dd hh-mm)。现在我需要数据库中的最小日期。我怎么能做到这一点。?请帮我。 提前致谢。

【问题讨论】:

  • 最小日期是什么意思? “0000-00-00 00:00”还不够好?
  • 重新开始并将数据类型更改为 DATE...
  • @Pekka:最小日期是指距当前日期最近的日期。
  • @CapDroid 但 DATETIME 正是这种类型。什么反对使用它?您还可以举例说明最近日期的含义吗?
  • @Cap:通过不使用日期时间字段,您将自己画到了这个角落。 datetime 字段正是您需要的,然后您可以简单地执行select min(yourfield)。通过存储为字符串,您可以强制 Mysql 在每个查询中从字符串->日期为每个字段进行昂贵的类型转换。

标签: mysql datetime


【解决方案1】:

将 col 转换为 unix 时间戳,获取当前日期为 unix 时间戳,获取差值,使其为正数,按该数字排序,返回第一行。

SELECT * FROM tablename ORDER BY ABS(UNIX_TIMESTAMP(dateCol) - UNIX_TIMESTAMP(NOW())) ASC LIMIT 1

编辑:来自您的 cmets,您需要下一行(按日期排序):

SELECT * FROM tablename WHERE UNIX_TIMESTAMP(dateCol) > UNIX_TIMESTAMP(NOW()) ORDER BY UNIX_TIMESTAMP(dateCol) ASC LIMIT 1

【讨论】:

    【解决方案2】:

    按日期(字符串)列升序对表格进行排序。 将行限制为第一行。给你日期栏。 那么你有最小的日期。

    无需转换。

    只有当您使用以下格式时才有可能:yyyy-MM-dd hh-mm 但你已经这样做了

    select datecol from table order by 1 limit 1,1
    

    可能示例中的限制是错误的 - 我不知道 mysql 是从 1 开始还是从 0 开始

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-11-09
      • 2020-02-12
      • 1970-01-01
      • 2015-06-21
      • 2013-05-09
      • 2016-07-23
      相关资源
      最近更新 更多