如何在PHP for MySQL中格式化日期?

如何在PHP for MySQL中格式化日期?,php,mysql,Php,Mysql,我正在尝试将DD/MM/YYYY格式的日期插入MySQL。数据库不喜欢这种格式,完全弄乱了日期。有没有简单的方法将日期转换成正确的格式?我认为MySQL应该对YYYY-MM-DD感到满意,所以在phpdate('Y-m-d',$myDate)我认为MySQL应该对YYYY-MM-DD感到满意,所以在phpdate('Y-m-d',$myDate) 或者,如果您对regexen不太满意: $date = join('-', array_reverse(explode('/', $date)));

我正在尝试将DD/MM/YYYY格式的日期插入MySQL。数据库不喜欢这种格式,完全弄乱了日期。有没有简单的方法将日期转换成正确的格式?

我认为MySQL应该对
YYYY-MM-DD
感到满意,所以在php
date('Y-m-d',$myDate)
我认为MySQL应该对
YYYY-MM-DD
感到满意,所以在php
date('Y-m-d',$myDate)

或者,如果您对regexen不太满意:

$date = join('-', array_reverse(explode('/', $date)));
或者,如果您对regexen不太满意:

$date = join('-', array_reverse(explode('/', $date)));

通常,您应该将应用程序中的日期作为时间戳或日期对象存储在内存中

这使它们易于转换为任何所需的格式,用于显示目的或插入数据库。它还使日期计算变得容易得多

如果您有一个字符串格式的日期,无论它是哪种字符串格式,当您需要将其用于其他目的时,您就不得不对字符串进行笨拙的重新格式化

MySQL对日期使用
YYYY-MM-DD
格式,对日期时间使用
yyy-MM-DD HH:MM:SS
格式。可以使用
'Y-m-d'
Y-mdh:i:s
函数中的
date()
字符串在PHP中表示这些内容

当从数据库中获取日期时,我建议使用MySQL的
UNIX\u TIMESTAMP()
函数以时间戳格式获取日期,这样您就不必担心进行任何字符串操作


希望这会有所帮助。

一般来说,您应该将应用程序中的日期作为时间戳或日期对象存储在内存中

INSERT INTO the_table (the_date)
VALUES (STR_TO_DATE('31/12/2001', '%d/%m/%Y'));
这使它们易于转换为任何所需的格式,用于显示目的或插入数据库。它还使日期计算变得容易得多

如果您有一个字符串格式的日期,无论它是哪种字符串格式,当您需要将其用于其他目的时,您就不得不对字符串进行笨拙的重新格式化

MySQL对日期使用
YYYY-MM-DD
格式,对日期时间使用
yyy-MM-DD HH:MM:SS
格式。可以使用
'Y-m-d'
Y-mdh:i:s
函数中的
date()
字符串在PHP中表示这些内容

当从数据库中获取日期时,我建议使用MySQL的
UNIX\u TIMESTAMP()
函数以时间戳格式获取日期,这样您就不必担心进行任何字符串操作

希望有帮助

INSERT INTO the_table (the_date)
VALUES (STR_TO_DATE('31/12/2001', '%d/%m/%Y'));
格式代码记录在

更新:我想我还应该提到,MySQL将在需要时执行到日期的自动转换。在这种情况下,它将使用
date\u格式
datetime\u格式
变量中定义的格式解析字符串:

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将在需要时执行到日期的自动转换。在这种情况下,它将使用
date\u格式
datetime\u格式
变量中定义的格式解析字符串:

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)

我们真的需要正则表达式来进行这个简单的转换吗:)@Adnan因为
DD/MM/yyyyy
不能通过
strotime
直接安全地进行解析,这相当简单和直接……我们真的需要正则表达式来进行这个简单的转换吗:)@Adnan因为
DD/MM/yyyyy
不能通过
strotime
直接安全地进行解析,这是相当简单和直接的。。。