2012-12-11 32 views
1

我想在我的數據庫中插入一個日期,我從php輸入中獲得。 我使用插入值的代碼看起來像這樣MYSQL混合日期

$length = strrpos($fristdatum, " "); 
$newDate = explode(".", substr($fristdatum, $length)); 
$fristdatum = $newDate[2] . "-" . $newDate[1] . "-" . $newDate[0]; 

可以說,我進入14.12.2012的日期,如果我echo $fristdatum我得到2012-12-14但只要我把它插入我的MySQL數據庫把它轉化爲2014.12.20任何想法?

列類型是日期。插入有點像這個

mysql_query("INSERT INTO sch_anschreiben (date)values('$fristdatum')) 

有更多的價值,但我想這並不事先關係

謝謝!

的幫助球員以及感謝我想通了我一個陣列中使用$fristdatumstr_replace,之後我格式化它,這樣

$patern = array("[Date]") 
$words=array($fristdatum) 
$content = str_replace($patern, $words, $content); 

,之後在數據庫中插入的,現在我改之以它會在str_replace之後格式化,並且它似乎工作得很好。如果有人能解釋我爲什麼^^, 也會感激。

+1

什麼是數據庫中的列類型? –

+0

我可以看到它在數據庫中插入的代碼嗎? – PinoyStackOverflower

回答

1

而不是爆炸和硬編碼的轉換,如果你有PHP 5.3或更高版本,則使用DateTime::createFromFormat

$date = DateTime::createFromFormat('d. m. Y',$fristdatum); 
echo $date->format('Y-m-d');//echoes 2012-12-14 

既然您正確地修改腳本以正確的方式註冊日期,那麼應該確保您的數據庫良好。 你可以使用這個請求我認爲:

UPDATE yourtable SET yourdate=CONCAT(MONTH(yourdate),'-',DAY(yourdate),'-',YEAR(yourdate)) WHERE MONTH(yourdate) > 12 
+0

好吧,這是一個很好的優化仍然如果我回顯$日期我得到正確的價值,但我得到的價值在我的數據庫是錯誤的由於某種原因 – Chaos

+0

,因爲這是最有用的職位我將其標記爲答案 – Chaos

+0

我添加了一些代碼來修改您的數據庫並使您的日期正確 – artragis

0

DATE類型用於具有日期部分但沒有時間部分的值。 MySQL以'YYYY-MM-DD'格式檢索並顯示DATE值。支持的範圍是'1000-01-01'到'9999-12-31'。

DATETIME類型用於包含日期和時間部分的值。 MySQL以'YYYY-MM-DD HH:MM:SS'格式檢索並顯示DATETIME值。支持的範圍是'1000-01-01 00:00:00'到'9999-12-31 23:59:59'。

TIMESTAMP數據類型用於包含日期和時間部分的值。 TIMESTAMP的範圍爲'1970-01-01 00:00:01'UTC至'2038-01-19 03:14:07'UTC。

所以,如果你想存儲它像14-12-2012然後使用它的數據類型爲varchar

+0

sry我只是改變了我的帖子,因爲我沒有讓自己完全清楚我不介意以yyyy-mm-dd的格式存儲它,但是因爲你看到我切換數組,所以它從14.12.2012變成2012-12-14,但它仍然將它保存爲2014-12-20由於某種原因 – Chaos

0

將其轉換爲Y-M-D格式。你應該直接把2012-12-14放到你的數據庫中。

+0

多數民衆贊成我正在嘗試用這條線 $ fristdatum = $ newDate [2]。 「 - 」。 $ newDate [1]。 「 - 」。 $ newDate [0]; – Chaos

+0

檢查它*複製粘貼*您的輸出值直接到您的數據庫表。 – vusan

+0

如果複製粘貼它白衣phpmyadmin它工作得很好 – Chaos