【发布时间】:2011-01-06 09:03:24
【问题描述】:
我在前端输入日期为 10:00 AM、12:00 PM 等...(表示 12 小时格式)。 现在我想将该值保存在 time 数据类型列中的数据库中。如何将该 AM PM 值保存到 MySQL 中的 time 数据类型中,并再次希望在前端显示附加 AM PM 的时间?
【问题讨论】:
我在前端输入日期为 10:00 AM、12:00 PM 等...(表示 12 小时格式)。 现在我想将该值保存在 time 数据类型列中的数据库中。如何将该 AM PM 值保存到 MySQL 中的 time 数据类型中,并再次希望在前端显示附加 AM PM 的时间?
【问题讨论】:
使用带有 %p 参数的 mysql 函数 DATE_FORMAT
【讨论】:
插入:
# 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' );
编辑:
我将继续假设您使用 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 字段中
编辑:
将%m(月)调整为%i(分钟)。感谢 Donny 发现的失误。
【讨论】:
TIME( STR_TO_DATE( "' . $open . '", "%h:%m %p" ) ) 给出解析错误
TIME( STR_TO_DATE( '" . $open . "', '%h:%m %p' ) )
day_close_time can not be null
TIME_FORMAT( '22:00:00', '%h:%i %p' ); 见这里:dev.mysql.com/doc/refman/5.1/en/…
这就是解决方案 在你看来----- $('#schedule_time' + ).datetimepicker({pickDate: false, format: 'h:m A', minTime: new Date(), useCurrent: false, autoClose: false});
当插入数据库时----'schedule_time' => date('H:i:s', strtotime($this->input->post('schedule_time'))),
演出时---------
【讨论】: