我正在尝试将格式为DD / MM / YYYY的日期插入MySQL。数据库不喜欢这种格式,并且完全破坏了日期。是否有一个简单的方法可以将日期转换为正确的格式?
答案 0 :(得分:3)
$date = preg_replace('!^(\d+)/(\d+)/(\d+)$!', '$3-$2-$1', $date);
或者,如果你对regexen不太满意:
$date = join('-', array_reverse(explode('/', $date)));
答案 1 :(得分:2)
INSERT INTO the_table (the_date)
VALUES (STR_TO_DATE('31/12/2001', '%d/%m/%Y'));
格式代码记录在http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_date-format
更新:我想我还应该提一下,MySQL会在需要时执行自动转换。在这种情况下,它将使用date_format
或datetime_format
变量中定义的格式解析字符串:
mysql> SELECT @@date_format, @@datetime_format;
+---------------+-------------------+
| @@date_format | @@datetime_format |
+---------------+-------------------+
| %Y-%m-%d | %Y-%m-%d %H:%i:%s |
+---------------+-------------------+
1 row in set (0.00 sec)
答案 2 :(得分:1)
我认为MySQL应该对YYYY-MM-DD
感到满意,所以在php date('Y-m-d',$myDate)
答案 3 :(得分:0)
通常,您的目标应该是将应用程序中的日期存储为内存中的时间戳或日期对象。
这使得它们易于转换为任何所需格式以用于显示或插入数据库。它还使日期算术更容易。
如果您有一个字符串格式的日期,无论它是哪种字符串格式,您都需要在需要将其用于不同目的时对字符串进行笨拙的重新格式化。
MySQL使用日期的YYYY-MM-DD
格式和日期时间的YYYY-MM-DD HH:MM:SS
格式。这些可以使用'Y-m-d'
函数中的Y-md h:i:s
和date()
字符串在PHP中表示。
当从数据库中取回日期时,我建议使用MySQL的UNIX_TIMESTAMP()
函数来获取时间戳格式的日期,这样您就不必担心进行任何字符串操作。
希望有所帮助。