2012-08-23 64 views
1

在我的sql查詢中,我按時間順序輸出日期。按大於今天的日期排序SQL結果(d-M-Y)

我的數據庫中的日期以d-M-Y格式存儲。

我想要做的是按照等於或大於今天的日期排序結果以便首先輸出。

我的查詢中我有這種我的查詢

...From $db ORDER BY STR_TO_DATE(sortdate, '%d-%M-%Y') ASC 

誰能告訴我,如果我可以做今天的日期進行比較,因爲每個記錄是從數據庫中輸出?

這會給我今天的日期

$todaysdate = date("d-M-Y", time()); 

但誰能告訴我,如果我可以建立到我的查詢?

在此先感謝。

回答

1

我的猜測是,你在一個VARCHAR列保存日期。請不要這樣做,當你想在日期上做些東西(比如這個)時,你會讓自己變得非常複雜。我建議你列轉換爲日期字段,然後只需使用:

SELECT * FROM my_table WHERE my_date_field >= CURDATE() 

如果你想輸出的DMY格式的日期,你可以使用DATE_FORMAT()

1

你真的應該被存儲在一個日期時間格式的日期。這將使更容易做各種命令,比較和其他許多事情。你可以舉個例子,然後使用mysql now()函數來獲得你需要的結果?

...From $db where sortDate>=now() ORDER BYsortdate ASC 
0

您可以使用WHERE sortdate >= $todaysdate

1

假設sortdate是datetime字段,爲了顯示等於或大於今天的日期,可以使用UNION。

SELECT * FROM my_table WHERE sortdate>= CURDATE() 
UNION 
SELECT * FROM my_table WHERE sortdate< CURDATE() 
0

只要把在這種情況下象date_column> = CURDATE()/ $ todaysdate

感謝