【问题标题】:php mysql date/time questionphp mysql日期/时间问题
【发布时间】:2010-09-24 22:22:11
【问题描述】:

我已经构建了一个小型应用程序,它具有用户管理、一个用于输入数据的前端控制台和一个用于控制部分前端的后端控制台。前端将行添加到带有时间戳的 MySQL 数据库中。后端需要能够从数据库中选择 X 和 Y 日期之间的行。

到目前为止,一切正常,除了我真正苦苦挣扎的日期部分。

前端 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 日期之间的行数组。

抱歉,如果这有点漫无边际,希望它很清楚,但如果您需要更多信息,请告诉我。

【问题讨论】:

  • 您能澄清一下“这是正确的做法吗”?你是否达到了你想要的结果?如果没有,你想达到什么结果?
  • 您可能希望在帖子中添加 mysql_real_escape_string 以停止注入

标签: php mysql datetime select


【解决方案1】:

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”是您的日期时间字段的名称。

【讨论】:

  • DATE_SUB / DATE_ADD 可能对此有所帮助 - 就像 php 的 strtotime('+4 days') 或使用 mktime,它可以让您忘记一个月中有多少天。
【解决方案2】:

你是对的。我可以确认数据库具有“YYYY-MM-DD HH:MM:SS” - 我正在使用 SQLWave 编辑器快速浏览数据库,它会自动格式化 DATETIME 列。

// Initial questions still stand :)

或者没有,只是注意到您更新了答案 - 非常感谢!实际上,我曾多次尝试相同的查询但无济于事,主要是因为我的 WHERE 错误地指定了日期格式。被 SQLWave 误导了 :(

从现在开始回到使用命令行!!!

【讨论】:

    【解决方案3】:

    “我需要什么样的 SQL 语句来提取 X 和 Y 日期之间的行数组?”

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多