2008-12-02 98 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"