2008-12-02 134 views
1

我已經構建了一個小型應用程序,它具有用戶管理,前端控制檯輸入數據和後端控制檯來控制前端的部分。前端將行添加到具有時間戳的MySQL數據庫中。後端需要能夠在X和Y日期之間從數據庫中選擇行。php mysql日期/時間問題

一切工作到目前爲止,除了日期部分,我真的很苦惱。

的前端輸入的SQL語句看起來像這樣(用虛假代碼中刪除簡體):

$date = time(); 
$top_level_category = $_POST['top_level_category']; 
$sub_level_category = $_POST['sub_level_category']; 
$company = $_POST['company']; 
$agent_name = $_POST['agent_name']; 
$ticket_id = $_POST['ticket_id']; 

$sql = "INSERT INTO dacc_data (" 
    .  "id, top_level_category, sub_level_category, " 
    .  "agent_name, date, ticket_id, company" 
    . ") VALUES (" 
    .  "NULL, '$top_level_category', '$sub_level_category', " 
    .  "'$agent_name', FROM_UNIXTIME('$date'), '$ticket_id', '$company'" 
    . ")" 
; 

$result = mysql_query($sql) or die (mysql_error()); 

,似乎工作正常,時間戳被拾起,並加入到DATETIME列在我的表。它在數據庫中顯示爲dd/mm/yyyy hh:mm:ss。

所以......我的第一個問題是 - 這是正確的做法嗎?

第二個問題是,我需要什麼樣的SQL語句來提取X和Y日期之間的行數組。如果這是漫不經心的話,希望它很清楚,但如果你需要更多的信息,請告訴我。

+0

ps MySQL和PHP版本4. – suitedupgeek 2008-12-02 12:40:32

+0

您能否澄清「這是正確的做法嗎?」您是否達到了您想要的結果?如果不是,您希望達到什麼結果? – 2008-12-02 12:48:42

回答

6

MySQL的日期時間應與破折號的格式:

YYYY-MM-DD HH:MM:SS

http://dev.mysql.com/doc/refman/5.0/en/datetime.html

然後你就可以查詢日期範圍幾個方面:

select * 
from table 
where date >= '[start date]' and date <= '[end date]'; 

select * 
from table 
where date between '[start date]' and '[end date]'; 

其中「table」是數據庫表的名稱,「date」是datetime字段的名稱。

0

你是對的。我可以確認數據庫有「YYYY-MM-DD HH:MM:SS」 - 我使用SQLWave編輯器快速瀏覽數據庫,它自動格式化DATETIME列。

// Initial questions still stand :) 

還是沒有,只是注意到你更新了答案 - 非常感謝你!我實際上已經嘗試了幾次相同的查詢無濟於事,主要是因爲我的WHERE錯誤地指定了日期格式。通過SQLWave :(

返回誤導而使用命令行從現在開始!

0

「我需要拉出來的X和Y日之間行的一組什麼樣的SQL語句的?」

SELECT * FROM `dacc_data` where `date` between "2008-11-01" and "2008-12-01"