Amaçlanan gibi Evet, lexicographical order biçiminde dizeleri yyyy-mm-dd hh:ii:ss
çalışır. Hatta böyle tarihleri sıralamak olabilir.
$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";
}
baskılar
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
Ama doğru biçimde not olan dizeleri için hiçbir geri bildirim alacaksınız unutmayın. Yani, daha çok kontrol ediyorum biçimlendirilmiş dizeleri varsa o could be söyledi. Bir endişe değilse, dize1> dize2 ok.
edit: Hatta MySQL işi yapalım olabilir. Bu daha iyidir / php bunu yapıyor daha kötü / eşit aslında başarmak için çalışıyoruz bağlıdır. Örneğin
$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";
}
baskılar
- 1000-01-01 00:00:00
+ 2010-03-16 21:22:19
- 1000-01-01 00:00:10
+ 1976-03-27 05:55:00