2012-10-01 90 views
0

在MySQL返回的日期值我有一个关于值一个简单的问题返回形式的MySQL。如何通过PHP

在我的表之一,我有一列分配date数据类型。将信息插入数据库时​​,将自动执行curdate()以插入正确的日期。

也就是说,MySQL认识到这个值是一个日期。我有一个PHP脚本,将这个值提供给用户。现在,从php的角度来看,这个值是一个字符串吗?

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

任何洞察力是赞赏。

+0

当你在MySQL中插入日期时,他们*有*为字符串。然后,MySQL将它转换为日期并存储它,但是这个日期必须在'YYYY-MM-DD'中。但在你这样做之前,你确定你需要*来做到这一点吗?你基本上是将重复的数据插入到另一个表中。 [denormalization](http://en.wikipedia.org/wiki/Denormalization)通常不好。 – NullUserException

+0

我知道这一点。我从中抽取日期的表格是一张临时表格 - 如果您愿意的话,这是一张审计表格 - 它具有关联的行被动态地创建和删除。它不会使数据库非规范化。这很难作为评论来解释。 – Mlagma

回答

0

MySQL是足够聪明的投字符串转换成日期。字符串应该可以是任何标准格式,并且可以正确翻译它。

编辑:对不起,我错了。

您可以使用PHP或MySQL日期分析函数来处理这个问题。在PHP:

date("Y-m-d", strtotime($row['myDateField'])); 

这里是的strtotime可以解释有效日期字符串列表: http://www.php.net/manual/en/datetime.formats.date.php

+0

非常好 - 这就是我需要知道的。谢谢! – Mlagma

+1

你确定吗? MySQL预计日期是'YYYY-MM-DD',我非常怀疑你可以随意抛出任何东西,正如你似乎暗示的那样。 CC:@Mlagma – NullUserException

+0

@NullUserException,对不起,你是对的。我有时会让我的MS SQL和MySQL感到困惑。我会更新我的答案... –

0

可以使用MySQL的STR_TO_DATE()转换字符串到日期......这样你就可以直接保存字符串与MySQL与日期格式(“YYYY-MM-DD”),只是与MySQL方法STR_TO_DATE施放它()。
HERE

0

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_FORMAT()函数的文档中说明。您可以随时控制投自己与如:

说,事实是,太多的工具依赖在@@date_format@@datetime_format保持他们的出厂值,所以改变他们整个系统可能会打破很多东西。

PHP扩展可能会将日期列转换为DateTime对象(您不会说你正在使用哪一个),但目前没有内置的对象,这很遗憾。