MySQL 是不是会自动重新格式化插入到 DATETIME 类型列中的日期?

Posted

技术标签:

【中文标题】MySQL 是不是会自动重新格式化插入到 DATETIME 类型列中的日期?【英文标题】:Does MySQL automatically re-format dates inserted in to a column of type DATETIME?MySQL 是否会自动重新格式化插入到 DATETIME 类型列中的日期? 【发布时间】:2014-09-21 20:00:07 【问题描述】:

我理解DATETIMEmysql中的格式是YYYY-MM-DD HH:MM:SS

我正在使用 Bootstrap 日期选择器,它会发布类似 07/30/2014 的值。如何将其更改为 '2014-07-30 00:00:00`?

我不希望用户看到小时等,但它必须在字符串中。 datepicker能输出这样的字符串吗?

SQL

$stmt = $dbh->prepare("INSERT INTO bookings (forename, surname, site, badge, start, end) VALUES (:forename, :surname, :site, :badge, :start, :end)");
...
$stmt->bindParam(':start', $start);
$stmt->bindParam(':end', $end);

【问题讨论】:

不,它没有,您应该知道您正在使用的数据格式:日期选择器等工具、php 等语言甚至 MySQL 函数都可以帮助将日期从一种格式转换为另一种格式, 但只有您可以告诉他们要转换的格式和格式 【参考方案1】:

是的,但如果它是一个字符串,你应该使用STR_TO_DATE() 来转换它:

$msql ="insert into table (birthdate)value(STR_TO_DATE('$yourdate','%d/%m/%Y'))";
mysql_query($msql);

我做了什么: 我将字符串 $yourdate 转换为 DateTime 值。

PS%d/%m/%Y 应该是字符串中日期的格式,而不是服务器示例中的日期格式: 如果你有这样的约会 22/2/2014 应该可以正常工作,但如果你有这样的约会:2/22/2014 你应该给它:'%m/%d/%Y'

【讨论】:

>>你应该给它这个:'%m/$d/%Y' 请修复 $$$ 嗨。谢谢。我应该在INSERTbindParam 中这样做吗? 实际上,如果您使用的是 bindparam,则不需要所有这些东西,只需正常给它字符串并执行您的查询 但是$start$end07/30/2014一样,不需要转换吗? 我告诉你什么只是给它这样的 bindparam 如果它不起作用尝试然后这样做:在查询中:插入...... STR_TO_DATE(:start,'%d/ %m/%Y'),STR_TO_DATE(:end,'%d/%m/%Y')) 并正常给它参数

以上是关于MySQL 是不是会自动重新格式化插入到 DATETIME 类型列中的日期?的主要内容,如果未能解决你的问题,请参考以下文章

mysql中自动插入时间的格式。 我使用mysql 数据库中设置,当有一条数据插入的时候,会自动插入当前时间…

怎么样将java中的date类型插入到mysql的datetime

Codeigniter 将部分 CSV 数据插入到 MYSQL 中,只有 id 和 date

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

即使由于错误导致插入失败,MySQL 自动增量值也会增加

java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明)