Да, лексикографический порядок строк в формате 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
Но имейте в виду, что вы не получите обратной связи для строк, которые не в правильном формате. Так что, если может быть , что есть неправильно сформированные строки, вам лучше это проверить. Если это не проблема, строка1> строка2 в порядке.
edit: Вы могли бы даже позволить 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