【问题标题】:sql fetch date limit by 1sql 获取日期限制为 1
【发布时间】:2015-05-28 13:45:30
【问题描述】:

我使用的是date('Y-m-d h:i:s A'),而不是时间戳,并将其存储为字符串。我的问题是我无法获得插入日期的最新值,因为我正在使用:

选择 ID、日期 从表 ORDER_BY 日期 DESC 限制 1

正在获取的输出是2015-05-28 09:11:16 PM,即id = 10,但我要获取的是id = 12。有没有办法比较这些值并选择 id 12 的最新值?

表格按日期顺序排列

| id  |  date                  |
================================
| 12  | 2015-05-28 09:26:20 PM |
| 11  | 2015-05-28 09:26:04 PM |
| 10  | 2015-05-28 09:11:16 PM |

【问题讨论】:

  • 添加where 子句。 IE。 where id=12 ?无法理解问题。
  • 那么你想要最新的 id 12 还是最新的不考虑 id?
  • @Fred-ii- 我只需要选择 1 个最新的日期,但 desc 或 asc 仍然获得 id=1 的起息日
  • @nik0lias 是的,无论 ID 是什么,都是最新日期。
  • 好的,我知道它是基于文本的,所以我很接近。现在,如果您处于项目的早期阶段,您最好使用 MySQL 的 datetime 功能,并且以后更容易查询,原因有很多。之后您始终可以使用 PHP 修改“输出”。这样做会使事情复杂化。咨询dev.mysql.com/doc/refman/5.0/en/datetime.html,然后使用该功能进行订购/分组; 容易多了。 ;-)

标签: php mysql date


【解决方案1】:

您的日期列似乎不是 datetime 类型,而是 varchar。排序时必须将其转换为日期时间:

SELECT FROM table
ORDER BY convert(datetime, date, 103) ASC

与 MySQL 的或:

ORDER BY STR_TO_DATE(datetime, '%m/%d/%Y');

【讨论】:

  • 我已经编辑了我原来的答案 - 请尝试 or 部分。
  • 好的,我现在看到你的标签说 MySQL 使用 STR_TO_DATE() 函数STR_TO_DATE(date,'%Y/%d/%m')
  • “从你的 SQL 中取出 'DESC',这将对日期进行升序排序” - 正如@MarcB 所说,您可能需要重新考虑这一点。来自手册dev.mysql.com/doc/refman/5.0/en/sorting-rows.html“默认排序顺序是升序,最小值在前。要逆序(降序)排序,请将 DESC 关键字添加到要排序的列的名称中”
  • 好的!行!我看到了 DESC == ascending 的东西 - 编辑了我的答案 - 谢谢
  • 我认为那是绿色的,an assist... ;-) 谁将赢得今年的系列赛?
【解决方案2】:

我会ORDER BY id DESC LIMIT 1这应该给你从最早到最新的ID,并给你当前的记录。

【讨论】:

    【解决方案3】:

    在 MySQL 中你可以这样做:

    SELECT id, date FROM table ORDER BY UNIX_TIMESTAMP(date) DESC LIMIT 1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-16
      • 2014-04-08
      • 2021-07-15
      • 1970-01-01
      • 1970-01-01
      • 2013-06-08
      • 2015-05-19
      相关资源
      最近更新 更多