将日期和时间插入Mysql

Posted

技术标签:

【中文标题】将日期和时间插入Mysql【英文标题】:Insert date and time into Mysql 【发布时间】:2011-02-25 04:21:49 【问题描述】:

我正在尝试将日期和时间插入 mysql 日期时间字段。当用户选择日期和时间时,它将生成两个 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】:
$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')";

【讨论】:

因为第一个sn-p包含SQL注入漏洞。我还有一个-1。 :-P :-) @Noninlist - 来自 *** 的代码 sn-ps 不应逐字剪切和粘贴。我解决了手头的问题。但只是为了你,我添加了对 mysql 真实转义字符串的调用【参考方案2】:

日期必须具有显示给您的格式:0000-00-00 00:00:00

所以,你必须转换它。 SO上有上千个关于这种转换的问题。 最短的方法是

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 看起来像那样。并且在您的查询中需要用引号括起来。

【讨论】:

【参考方案4】: 或者您自己将字符串转换为YYYY-MM-DD HH:MM:SS 格式,

或者你使用 MySQL 中的 str_to_date() 函数。

INSERT INTO 表 DATETIME 值 (str_to_date($date,"%m/%d/%Y %h:%i"))

【讨论】:

【参考方案5】:

据我所知,默认情况下,Mysql 日期时间应该是“yyyy-mm-dd hh:mm:ss”格式。

【讨论】:

【参考方案6】:

我已经通过这样的 API 在 mysql db 中添加了日期和时间:


调用接口

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

    odate 类型为日期 otime 类型是 DB 中的 TIME。

它将 odate 存储为 2012-03-23,otime 存储为 16:45:45。

【讨论】:

以上是关于将日期和时间插入Mysql的主要内容,如果未能解决你的问题,请参考以下文章

MySQL PHP插入新行,其中rowNum列值始终按日期和时间按时间顺序排列

如何在 mysql 查询中插入日期?

java向mysql插入时间,时间日期格式化

将日期插入 MySQL 数据库时如何忽略时间戳

JAVA里面如何将字符串日期插入到MYSQL数据库

将日期插入mysql数据库时,时间减少一天