mysql中如何通过php返回日期值

mysql中如何通过php返回日期值,php,mysql,date,sqldatatypes,Php,Mysql,Date,Sqldatatypes,我有一个关于MySQL返回值的快速问题 在我的一个表中,有一列指定了date数据类型。将信息插入数据库时,将自动执行curdate(),以插入正确的日期 也就是说,MySQL认识到值是一个日期。我有一个php脚本,可以提取该值并将其呈现给用户。现在,从php的角度来看,这个值是字符串吗 我想做的是,如果必要的话,我应该说,使用pull值并将其插入到一个新表中(例如:10/1/12由php拉入,然后插入到一个新表中)。如果是这种情况,我可以简单地将该值放入新表的数据类型为date的列中吗?或者My

我有一个关于MySQL返回值的快速问题

在我的一个表中,有一列指定了
date
数据类型。将信息插入数据库时,将自动执行
curdate()
,以插入正确的日期

也就是说,MySQL认识到值是一个日期。我有一个php脚本,可以提取该值并将其呈现给用户。现在,从php的角度来看,这个值是字符串吗

我想做的是,如果必要的话,我应该说,使用pull值并将其插入到一个新表中(例如:10/1/12由php拉入,然后插入到一个新表中)。如果是这种情况,我可以简单地将该值放入新表的数据类型为
date
的列中吗?或者MySQL不承认这是一个日期


任何见解都值得赞赏。

MySQL非常聪明,可以在日期中添加字符串。字符串应该可以是任何标准格式,并且可以正确地进行转换

编辑:对不起,我错了

您可以使用PHP或MySQL日期解析函数来处理此问题。在PHP中:

date("Y-m-d", strtotime($row['myDateField']));
以下是strotime可以解释的有效日期字符串列表:

您可以使用此方法DateTime::createFromFormat


您可以使用mySQL str_to_date()将字符串转换为日期…因此您可以直接使用mySQL以日期格式(“yyyy-MM-dd”)保存字符串,并使用mySQL方法str_to_date()将其强制转换。

MySQL没有原生日期的语法。相反,它使用默认日期格式自动将日期从/转换为字符串:

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)
。。。其中格式代码是函数文档中解释的代码。您始终可以自己控制演员阵容,例如:

  • 将日期转换为字符串
  • 将字符串转换为日期
尽管如此,事实是太多的工具依赖于
@@date\u格式
@@datetime\u格式
保留它们的出厂值,因此在整个系统中更改它们可能会破坏很多东西


PHP扩展可以将日期列强制转换为对象(您不知道使用的是哪一个),但目前没有一个内置的可以这样做,这很遗憾。

非常好-这就是我需要知道的。谢谢你确定吗?MySQL预计日期为
YYYY-MM-DD
,我高度怀疑您是否能像您所暗示的那样对其进行任何处理。抄送:@Mlagma@NullUserException,对不起,你说得对。我有时会把MS SQL和MySQL弄糊涂。我会更新我的答案…@AdamPlocher IIRC MS SQL也没有那么灵活,或者实际上更糟。您必须使用类似于插入到。。。convert(DateTime,'date\u string\u here',format)其中最后一个参数是您必须记住的模糊格式id。@NullUserException不能离主题太远,但事实并非如此。MS SQL将自动尝试将您抛出的任何varchar/字符串转换为日期(如果插入或更新datetime字段)。这些格式中的任何一种都被接受:这很有趣。我没有考虑这一点。当你把日期插入到MySQL中时,它们必须是字符串。MySQL将把它转换成一个日期并存储,但是这个日期必须是
YYYY-MM-DD
。但在你这么做之前,你确定你需要这么做吗?实际上,您是在将重复数据插入另一个表中。而且通常都不好,我知道。我从中提取日期的表是一个临时表——如果您愿意,它是一个审计表——动态创建和删除关联行。它不会使数据库非规范化。很难用评论来解释。