2010-01-18 1 views
7

I m вводная дата переднего конца как 10:00, 12:00 PM и т. Д. (Формат 12 часов). сейчас я хочу сохранить это значение в базе данных в время тип данных столбца. Как сохранить значение AM PM в времени datatype в MySQL и снова хотите отображать время добавления AM PM на лицевой стороне?хранить временную строку AM PM в типе данных TIME в MySQL и получать с AM PM во время отображения?

ответ

13

Для вставки:

# replace first argument of STR_TO_DATE with value from PHP/frontend 
TIME(STR_TO_DATE('10:00 PM', '%h:%i %p')); 

Для выбора:

# replace first argument with your time field 
TIME_FORMAT('22:00:00', '%h:%i %p'); 

EDIT:
Я просто идти вперед и предположить, вы используете функции mysql lib.

// first sanitize the $_POST input 
// also, make sure you use quotes to identify the $_POST keys 
$open = mysql_real_escape_string($_POST[ 'MondayOpen' ]); 
$close = mysql_real_escape_string($_POST[ 'MondayClose' ]); 

// this is the query, which should work just fine. 
$sql = ' 
    INSERT INTO 
     `table_lib_hours` 
    SET 
     `day_name` = "Monday", 
     `day_open_time` = TIME(STR_TO_DATE("' . $open . '", "%h:%i %p")), 
     `day_close_time` = TIME(STR_TO_DATE("' . $close . '", "%h:%i %p")) 
    '; 

$result = mysql_query($sql); 

Затем для получения значений:

$sql = ' 
    SELECT 
     `day_open_time`, 
     `day_close_time`, 
     TIME_FORMAT(`day_open_time`, "%h:%i %p") as day_open_time_formatted, 
     TIME_FORMAT(`day_close_time`, "%h:%i %p") as day_close_time_formatted 
    FROM 
     `table_lib_hours` 
    WHERE 
     `day_name` = "Monday" 
    '; 

$resultset = mysql_query($sql); 

Это возвращает набор результатов, где отформатированы данные в *_formatted полях

EDIT:
Скорректированная %m (месяц) до %i (минуты). Благодарю вас за Донни за то, что вы заметили.

+0

Первое: вы не должны использовать $ _POST прямо в своих запросах ... действительно. Сначала вы должны дезинформировать ценности. Но чтобы лучше вам помочь: можете ли вы также показать код PHP, где вы выполняете этот запрос? (Пожалуйста, обновите свой вопрос, а затем опубликуйте комментарий, если хотите, потому что это легче читать. Спасибо). –

+0

'TIME (STR_TO_DATE (" '. $ Open.' ","% H:% m% p "))' дает ошибку синтаксического анализа – diEcho

+0

должно быть 'TIME (STR_TO_DATE ('". $ Open. "', ' % h:% m% p ')) ' – diEcho

0

использование MySQL функция DATE_FORMAT с% р параметра

Смежные вопросы