1

我正在尝试在我的数据库中插入一个从 php 输入获得的日期。我用来插入值的代码如下所示

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

假设我输入14.12.2012日期,但一旦我将它插入我的 MySQL 数据库,它就会变成echo $fristdatum任何想法?2012-12-142014.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并且它似乎工作得很好。如果有人能解释我为什么也将不胜感激^^。

4

3 回答 3

1

DateTime::createFromFormat如果您有 PHP 5.3 或更高版本,请优先使用,而不是分解和硬编码转换。

$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
于 2012-12-11T10:09:59.997 回答
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.

于 2012-12-11T10:00:44.197 回答
0

将其转换为 YMD 格式。您应该直接将 2012-12-14 放入数据库中。

于 2012-12-11T10:08:06.647 回答