2013-08-29 66 views
0

我將此日期時間'29 -08-2013 12:27:04'轉換爲此格式'2013-08-29 12:27 :04'使用此代碼當使用strtotime()和date()更改日期時間格式時產生特定日期時間的空值

$insert_dts = date('Y-m-d H:i:s',strtotime($this->input->post('insert_dts'))); 

但問題是;每當該值變爲空值時,結果爲'1970-01-01 00:00:00'。

由於我使用$insert_dts進入數據庫,它在日期時間字段中輸入此值(1970-01-01 00:00:00)而不是「0000-00-00 00:00:00」在MySQL數據庫。

我知道這可以通過if檢查$this->input->post('insert_dts')是否爲null來解決。

有沒有其他解決方案沒有檢查每一個?

+1

沒有,什麼關於檢查每個值的問題? – steven

+1

1970-01-01 00:00:00在epoch中爲零,在unix_timestamps中使用。時間戳記自1970-01-01 00:00:00以來的秒數。所以它是完全正確的,並且沒有其他方式在這部分代碼中預先檢查值。另一種可能性是在SQL語句 – MyChaOS

+0

@steven沒有任何內容的情況下插入數據庫時​​處理此問題,只是詢問是否還有其他內容? –

回答

0
$time = strtotime($this->input->post('insert_dts')); 
if($time == 0) 
$insert_dts = date('Y-m-d H:i:s',); 
1

使用觸發器BEFORE INSERT可能是一個更清潔的方式。

http://dev.mysql.com/doc/refman/5.0/fr/create-trigger.html

不知道你認爲這是不同於「檢查每一個」。

+0

我會使用TIMESTAMP,因爲它提供默認值CURRENT_TIMESTAMP,它在INSERT期間自動日期。 –

+0

但如果我使用觸發器,我可以插入值1970-01-01 00:00:00? –

+0

每次插入'1970-01-01 00:00:00',無論如何,都會將其轉換爲'0000-00-00 00:00:00'。 '01-01-1970 00:00:00'真的可能成爲輸入嗎?如果是這樣,你將需要檢查它使用PhP – Sugar

0

簡單:

$insert_dts = $this->input->post('insert_dts') ? date('Y-m-d H:i:s', strtotime($this->input->post('insert_dts'))) : '0000-00-00 00:00:00'; 
+0

不是我問的東西,但更清潔的方式,謝謝 –