2012-10-01 79 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對象(您不會說你正在使用哪一個),但目前沒有內置的對象,這很遺憾。