Php 按时间顺序排序MySQL记录?

Php 按时间顺序排序MySQL记录?,php,mysql,sorting,Php,Mysql,Sorting,我在MySQL表中有一组记录,每个记录都有一个日期属性(m.d.Y),一个时间属性存储为hr:min:sec。我想根据日期和时间按时间顺序对它们进行排序。如何使用PHP/MySQL实现这一点 编辑:如果您认为有更有效的方法在数据库中存储我的日期和时间,请告诉我 如果您认为有更有效的方法在数据库中存储我的日期和时间,请让我知道 是的,在表中创建一个datetime或timestamp字段,按此字段创建索引并按其排序 查询: /* add a column */ alter table `table

我在MySQL表中有一组记录,每个记录都有一个日期属性(m.d.Y),一个时间属性存储为hr:min:sec。我想根据日期和时间按时间顺序对它们进行排序。如何使用PHP/MySQL实现这一点

编辑:如果您认为有更有效的方法在数据库中存储我的日期和时间,请告诉我

如果您认为有更有效的方法在数据库中存储我的日期和时间,请让我知道

是的,在表中创建一个
datetime
timestamp
字段,按此字段创建索引并按其排序

查询:

/* add a column */
alter table `table` add column `created_at` datetime not null default "0000-00-00 00:00:00"
/* create an index */
alter table `table` add index `created_at` (`created_at`)
/* sort */
select * from `table` order by `created_at`

将数据存储为时间戳或日期时间,然后使用PHP中的date()函数格式化,这样会更有效

$var1 = date("m.d.Y", timestamp);
$var1 = date("h:i:s", timestamp);

好的,在MySQL表中,创建一个新列,不管名称是什么,类型为DateTime或Timestamp,您可以将默认值设置为CURRENT Timestamp或类似的值,我不记得它的确切名称,但在PHPMyAdmin中很容易做到。那么,你就可以点这个了。该列将自动填充。或者,如果需要,您可以手动填写。然后您只需按(
ColumnName
)订购即可

为什么不将Mysql表字段数据类型指定为“DATETIME”,并从php中保存数据,如
date(“Y-m-dh:i:s”)


您可以选择记录并按此日期字段降序或升序对其排序。

您可以合并这两个属性,因为MySQL具有
DateTime
数据类型。由于必须使用属性,因此仍然可以通过连接两个属性并将其转换为real
DateTime
值来对记录进行排序

SELECT *
FROM tablename
ORDER BY STR_TO_DATE(CONCAT(`date`, ' ', `time`), '%m/%d/%Y') ASC

如果可以,一定要尝试利用数据库

在选择的最后使用“订单按日期”字段和“时间”字段


如果列实际上是字符串,那么考虑创建一个新表并更改列类型,使它们分别为日期和时间。STR_TO_DATE函数可以将字符串转换为日期。如果您愿意,可以将它们组合成一个datetime列。如果要这样做,可能需要CONCAT或其他字符串函数。

如果要根据日期和时间对它们进行排序,可能应该考虑使用时间戳。如果您使用该字段保存记录,可以将默认值设置为CURRENT_TIMESTAMP,MySQL将自动为您插入此信息

然后,像下面这样的简单查询将获取所有记录并按时间戳字段对它们进行排序

SELECT * FROM table WHERE something = 'matches' ORDER BY thetimestampfield DESC
PHP代码示例:

<?php
  // $c is a reference to mysql_connect() somewhere else in your code
  $q = "SELECT * FROM table WHERE something = 'matches' ORDER BY thetimestampfield DESC";
  $r = mysql_query($q, $c);
  while($row = mysql_fetch_assoc($r)) {
    // do your thing
  }
?>

那么我应该如何在数据库中准确地存储日期时间呢?它会像“日、月、年、时、分、秒”那样吗?订单重要吗?谢谢,好的。那么就来点提示:
显示像“datetime_格式”这样的变量;)