【问题标题】:How can I order SQL results after they have been requested?如何在请求 SQL 结果后对其进行排序?
【发布时间】:2020-12-16 04:51:59
【问题描述】:

有没有办法在我的 SQL 结果交付后对其进行排序?到目前为止,我有两个值。我的代码目前返回结果,可以按日期排序ORDER BY date ASC 感兴趣的数据库条目是。

| date       | weeks |
| 2020-07-01 | 2     | 
| 2020-07-01 | 3     |
| 2020-07-01 | 5     |

周表示距下一个日期还有多少周。所以 2020-07-21、2020-08-03 等等(我能够返回这些值)。 order by 需要能够对日期进行排序并考虑从最近周到最远周的周值。

我尝试使用名为 final_date 的新字段更新数据库,尽管这会使一切变得混乱。

返回数据后,我可以使用以下方法找到新日期:

$addWeeks = strtotime('+'.$numberOfWeeks.' weeks', strtotime($last));

虽然,我找不到按新值排序结果的方法。

【问题讨论】:

  • 您真的以那种格式存储日期吗?日期是什么数据类型?
  • @P.Salmon 我的日期格式实际上是 (2020-07-01)。日期是 SQL 数据库中的实际日期值
  • 始终确保示例数据与您的真实数据具有相同的格式,以减少混淆和误解。
  • 我更新了问题以包含正确的数据格式。 @MagnusEriksson
  • 7-08-20202020-07-01 的格式不同。对这两个进行排序会以完全不同的顺序为您提供记录。

标签: php mysql sql datetime sql-order-by


【解决方案1】:

order by 需要能够对日期进行排序,并考虑从最近周到最远周的周值。

我想你想要:

select t.*
from mytable t
order by t.date + interval t.weeks week

请注意,这假定列 datedate 数据类型,而不是字符串;否则,您需要先将其转换为日期,例如使用str_to_date()

【讨论】:

    猜你喜欢
    • 2012-05-22
    • 2021-08-19
    • 1970-01-01
    • 2014-01-08
    • 2021-06-29
    • 2018-12-08
    • 1970-01-01
    • 1970-01-01
    • 2011-03-03
    相关资源
    最近更新 更多