2012-12-04 23 views
0

所以即時嘗試插入時間使用輸入文本字段到數據庫表中的數據類型時間。如何插入am/pm格式的時間到數據庫

,我想插入應該是這樣的時間格式:

H:MM PM //例如:下午6:30

的問題是在我的數據庫中的AM/PM犯規插入表。 只有小時和分鐘。

請給我想法如何解決這個問題。 更好的示例代碼。謝謝。

+6

爲什麼你需要存儲時間的格式?您可以將時間存儲在DATETIME字段中,並以您想要的方式顯示它... – m4t1t0

+1

請參閱:http://stackoverflow.com/questions/2086313/insert-am-pm-from-front-side-and-store- in-time-field-of-mysql – GBD

回答

0

將字段的類型更改爲varchar。 TIME不能像那樣存儲它。但是,請記住,如果希望將其存儲爲希望使其更難以提供本地化結果(如果這是您最終需要的)。也就是說,如果您不存儲時間戳本身,而是用戶友好的表示形式,則時區支持將變得非常困難。

編輯:或者,DATETIME也可以正常工作,正如上面的評論中指出的那樣。

+0

日期和時間屬於日期或時間(或DATETIME)字段。它們應該以適當的類型存儲並轉換爲演示文稿。 –

+0

在我看來,將時間戳存儲爲字符串並將其轉換爲PHP是完全可以接受的。 – imkingdavid

+0

直到你需要做某種算術操作,在這一點上它不是。如果您不需要DATE,TIME或TIMESTAMP類型,則它們不會存在。 (沒有downvote,順便說一句,我只是發表了評論。) –

0

您可以使用DateTime對象在PHP中具有的功能來創建任意格式的時間對象,也有一個功能,輸出像這樣

<?php 
    $date = DateTime::createFromFormat('j-M-Y', '15-Feb-2009'); 
    echo $date->format('Y-m-d'); 
?> 

http://php.net/manual/en/datetime.createfromformat.php

3

存放於任何格式的時間作爲標準格式(18:30:00)的TIME,以及顯示它時使用的格式(使用DateTime對象或日期函數)。

MySQL在存儲時間數據時不支持額外格式。

0

您最好將字段類型更改爲'VARCHAR(32)',然後用PHP寫入時間。

Example: date('m/d/y g:i:sa'); 

爲什麼你想要存儲am或pm?如果將日期/時間存儲爲unix時期時間戳,則可以在程序中格式化日期,而不是數據庫。

Example: time(); - Store this in an INT(8) field. 
     date('m/d/y g:i:sa, $time()); - Output from DB like this. 
+0

日期和時間屬於日期和時間(或DATETIME)字段,而不是字符字段。將它們轉換爲演示文稿,而不是存儲。 –

+0

這是真的 - 我會使用一個int(8)數據字段。 – Darius

6

數據類型TIME用於存儲時間數據類型 - 這意味着沒有AM/PM。存儲在數據庫中的數據以24小時格式,並使用其中的一個格式化它在PHP或MySQL12小時格式AM/PM:

PHP:

$date = new DateTime($mysql_column['time']); 
$date->format('h:i:s a'); 

或:

$date = date('h:i:s a', strtotime($mysql_column['time'])); 

或MySQL:

SELECT DATE_FORMAT('%h:%i:%s %p', time) FROM table; 
+0

我該如何格式化時間?我是指在保存到數據庫之前的用戶輸入時間。 – Towki

+0

@Towki如果用戶可以自由輸入任何他想要的內容,則必須進行正確的數據輸入驗證。您還可以創建實時JavaScript驗證,允許用戶只輸入數字和冒號,並且只能以這種格式輸入:00:00。然後當然要進行消毒,如果你有這樣的字符串:'18:59'或'08:12'等等,你可以很容易地將這個字符串存儲到你的'TIME'列中。 – shadyyx

0

您的日期變量後嘗試.ToShortTimeString()。

1

我想你想在數據庫中添加實際格式的數據庫中的jquery時間選擇器值。

這裏,我已經寫了一些功能

function update_time($time){ 
    $ap = $time[5].$time[6]; 
    $ttt = explode(":", $time); 
    $th = $ttt['0']; 
    $tm = $ttt['1']; 
    if($ap=='pm' || $ap=='PM'){ 
     $th+=12; 
     if($th==24){ 
      $th = 12; 
     } 
    } 
    if($ap=='am' || $ap=='AM'){ 
     if($th==12){ 
      $th = '00'; 
     } 
    } 
    $newtime = $th.":".$tm[0].$tm[1]; 
    return $newtime; 
} 
$time = update_time($_POST['time']); //here I am calling the function now you can insert the value in db 

你只需要調用該函數並在數據庫中插入返回值。 雖然打印,你可以做那樣的echo date("h:i A",strtotime($time));