2013-07-20 102 views
0

有一個字段CURDATE,像上午下午沒有插入MySQL表

<?php 
    $date = date_default_timezone_set('Asia/Kolkata'); 
    $time= date("l, F d, Y h:i:s A"); 
    ?> 
    <input type="hidden" value="<?php echo $time; ?>" name="curdate" id="curdate"/> 

將採取當前的日期和時間數據庫。

有另一列「curdatesql」,將採取上述時間到MySQL時間格式:

"' . $this->SanitizeForSQL($formvars['curdate']) . '", 
STR_TO_DATE("' . $this->SanitizeForSQL($formvars['curdate']) . '","%W, %M %d, %Y %h:%i:%s %p"), 

的問題是它沒有采取AM,PM部分到mysql表......這是爲什麼?

其採取像:2013-07-20 13:26:35(上午沒有下午的禮物)。

+3

爲什麼當你有24小時格式時需要AM/PM?所以你的日期格式是'yyyy-mm-dd hh:mm:ss'。現在'if(hh> = 12){PM} else {AM}' –

+0

^this和'$ hours%12'應該給你正確的上午/下午時間 – DarkBee

+0

檢查數據庫中的字段類型是否爲'datetime',如果要存儲am/pm,將接受格式'2013-07-20 13:26:35'將字段類型更改爲'varchar' – Kathiravan

回答

1

MySQL有幾個date and time formats。您似乎使用DATETIME,它以YYYY-MM-DD HH:MM:SS的形式顯示值。請注意,HH是24小時制。

你不應該存儲上午/下午額外,因爲這將是完全多餘的。在最好的情況下,你會浪費記憶,最糟糕的情況是你會得到不一致。

相反,你應該在表示層處理這個問題:

if(hh >= 12) { 
    PM 
} else { 
    AM 
} 

hours = hh % 12 

注意,您可以使用MySQL DATE_FORMAT得到你喜歡的格式。它可能看起來像這樣:

SELECT DATE_FORMAT(myStoredDatabaseAttribute, '%h %p') FROM myTable 
0

我的sql日期是以24小時格式存儲的,也是二進制的。如果表示需要12小時顯示格式,則必須在表示層中處理它。