是的,格式中字符串的字典顺序yyyy-mm-dd hh:ii:ss
按预期工作。你甚至可以像这样对日期进行排序。
$dts = array(
'1000-01-01 00:00:00',
'2010-03-16 21:22:19',
'1000-01-01 00:00:10',
'1976-03-27 05:55:00',
'1976-03-27 05:54:00',
'1968-08-21 12:00:00',
'2001-01-01 00:00:01'
);
sort($dts);
foreach($dts as $dt) {
echo $dt, "\n";
}
印刷
1000-01-01 00:00:00
1000-01-01 00:00:10
1968-08-21 12:00:00
1976-03-27 05:54:00
1976-03-27 05:55:00
2001-01-01 00:00:01
2010-03-16 21:22:19
但请记住,对于格式不正确的字符串,您不会收到任何反馈。因此,如果可能存在格式错误的字符串,您最好也检查一下。如果这不是问题,string1>string2 就可以了。
编辑:您甚至可以让 MySQL 完成这项工作。如果在 php 中这样做更好/等于/更差取决于您实际想要实现的目标。例如
$pdo = new PDO("mysql:host=localhost;dbname=test", 'localonly', 'localonly');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// setting up a sample table with some values
$pdo->exec('CREATE TEMPORARY TABLE foo (id int auto_increment, d datetime NOT NULL, primary key(id))');
$pdo->exec("INSERT INTO foo (d) VALUES ('1000-01-01 00:00:00'),('2010-03-16 21:22:19'),('1000-01-01 00:00:10'),('1976-03-27 05:55:00')");
$query = "
SELECT
d,
(d>'1910-03-17 12:00:00') as flag
FROM
foo
";
foreach ( $pdo->query($query) as $row ) {
echo $row['flag'] ? '+ ':'- ', $row['d'], "\n";
}
印刷
- 1000-01-01 00:00:00
+ 2010-03-16 21:22:19
- 1000-01-01 00:00:10
+ 1976-03-27 05:55:00