MYSQL混合日期

时间:2012-12-11 09:55:42

标签: php mysql date

我想在我的数据库中插入一个日期,我从php输入中获取。 我用来插入值的代码如下所示

$length = strrpos($fristdatum, " ");
$newDate = explode(".", substr($fristdatum, $length));
$fristdatum = $newDate[2] . "-" . $newDate[1] . "-" . $newDate[0];

让我说我14.12.2012作为日期输入echo $fristdatum我得到2012-12-14但是只要我将其插入我的MySQL数据库就会转向2014.12.20任何想法?

列类型是日期。插件有点像这样

mysql_query("INSERT INTO sch_anschreiben (date)values('$fristdatum'))

还有更多值,但我想这无关紧要

提前致谢!

非常感谢帮助伙伴们,我想出了$fristdatum,我在str_replace的数组中使用了$patern = array("[Date]") $words=array($fristdatum) $content = str_replace($patern, $words, $content); ,在我编写之后,就像这样

str_replace

然后将其插入数据库中我现在改变了它,因此它会在{{1}}之后格式化,它似乎工作得很好。 如果有人能解释我为什么^^。

,也会很感激

3 个答案:

答案 0 :(得分:1)

如果您使用PHP 5.3或更高版本,请使用DateTime::createFromFormat,而不是爆炸和硬编码转换。

$date = DateTime::createFromFormat('d. m. Y',$fristdatum);
echo $date->format('Y-m-d');//echoes 2012-12-14

现在您更正了脚本以正确方式注册日期,您应确保数据库正常。 您可以使用此请求:

UPDATE yourtable SET yourdate=CONCAT(MONTH(yourdate),'-',DAY(yourdate),'-',YEAR(yourdate)) WHERE MONTH(yourdate) > 12

答案 1 :(得分:0)

DATE类型用于具有日期部分但没有时间部分的值。 MySQL以'YYYY-MM-DD'格式检索并显示DATE值。支持的范围是'1000-01-01'到'9999-12-31'。

DATETIME类型用于包含日期和时间部分的值。 MySQL以'YYYY-MM-DD HH:MM:SS'格式检索并显示DATETIME值。支持的范围是'1000-01-01 00:00:00'到'9999-12-31 23:59:59'。

TIMESTAMP数据类型用于包含日期和时间部分的值。 TIMESTAMP的范围为'1970-01-01 00:00:01'UTC到'2038-01-19 03:14:07'UTC。

因此,如果您想将其存储为14-12-2012,请将其数据类型用作varchar

答案 2 :(得分:0)

将其转换为Y-M-D格式。您应该直接将2012-12-14放到您的数据库中。