将日期和时间插入到Mysql中。

11
我正在尝试将日期和时间插入到MySQL的datetime字段中。当用户选择日期和时间时,它会生成两个POST变量。我已经搜索了互联网,但仍然不确定如何实现。
我的代码。
//date value is 05/25/2010
//time value is 10:00

$date=$_POST['date'];
$time=$_POST['time'];

$datetime=$date.$time

如果我将 $datetime 插入到 mysql 中,日期似乎会变成 0000-00-00:00:00:00。

如果有人能帮助我解决这个问题,我会很感激。谢谢。


1
感谢GSTo的回答!+1给所有的回复! - FlyingCat
6个回答

7
$datetime = $_POST['date'] . ' ' . $_POST['time'] . ':00';
$datetime = mysql_real_escape_string($datetime);
$query = "INSERT INTO table(timestamp) VALUES ('$datetime')";

另一种可以处理更多格式的替代方案:

$datetime = $_POST['date'] . ' ' . $_POST['time'];
$datetime = mysql_real_escape_string($datetime);
$datetime = strtotime($datetime);
$datetime = date('Y-m-d H:i:s',$datetime);
$query = "INSERT INTO table(timestamp) VALUES ('$datetime')";

1
因为第一个片段包含 SQL 注入漏洞,所以我再给你点一个负分。 :-P :-) - Notinlist
2
@Noninlist - 从StackOverflow复制粘贴代码片段是不应该的。我解决了手头的问题,但为了你,我添加了一个调用mysql_real_escape_string的函数。 - GSto

4

日期格式必须为: 0000-00-00 00:00:00

因此,您需要进行转换。这里有数千个关于此转换的问题。
最简单的方法如下:

list($m,$d,$y) = explode("/",$_POST['date']);
$date = mysql_real_escape_string("$y-$m-$d ".$_POST['time']);

3

我认为日期时间格式应该像这样:

YYYY-MM-DD HH:MM:SS

因此,您需要将$datetime格式化为那样的形式。在需要查询的查询中,需要将其用引号括起来。


2
  • 要么你自己将字符串转换为YYYY-MM-DD HH:MM:SS格式,
  • 要么你可以使用MySQL的str_to_date()函数。

    将日期时间插入表中,使用以下语句:INSERT INTO table DATETIME values (str_to_date($date,"%m/%d/%Y %h:%i"))


1
据我所记,默认情况下,Mysql datetime 应该是以 "yyyy-mm-dd hh:mm:ss" 格式表示的。

0

我通过API将日期和时间添加到mysql数据库中,就像这样:


调用 API

http://localhost/SendOrder.php?odate=20120323&otime=164545

  1. odate类型是日期
  2. otime类型在数据库中是时间

它将odat​​e存储为2012-03-23,otime存储为16:45:45。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接