是的,格式爲yyyy-mm-dd hh:ii:ss
的字符串lexicographical order按預期工作。你甚至可以排序這樣的日期。
$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
謝謝,我認爲這將工作和使用數組是有道理的。 – Steffan 2010-03-16 21:18:46
添加了「in-mysql」解決方案。 – VolkerK 2010-03-16 22:03:04