[英]How do I format dates in PHP for MySQL?
我正在尝试将DD / MM / YYYY格式的日期插入MySQL。 该数据库不喜欢这种格式,并且完全在修改日期。 是否有简单的解决方法可以将日期转换为正确的格式?
$date = preg_replace('!^(\d+)/(\d+)/(\d+)$!', '$3-$2-$1', $date);
或者,如果您对regexen不太满意:
$date = join('-', array_reverse(explode('/', $date)));
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)
我认为MySQL应该对YYYY-MM-DD
感到满意,因此在php date('Ym-d',$myDate)
通常,您应该以在内存中将日期作为时间戳或日期对象存储在应用程序中为目标。
这使它们易于转换为显示或插入DB所需的任何格式。 这也使日期算术容易得多。
如果您使用字符串格式的日期(无论是哪种字符串格式),只要需要将其用于其他目的,就必须对字符串进行尴尬的重新格式化。
MySQL对日期使用YYYY-MM-DD
格式,对日期时间使用YYYY-MM-DD HH:MM:SS
格式。 这些可以在PHP中使用date()
函数中的'Ym-d'
和Y-md h:i:s
字符串表示。
从数据库获取日期时,建议使用MySQL的UNIX_TIMESTAMP()
函数以时间戳格式获取日期,因此您不必担心进行任何字符串操作。
希望能有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.