将 AM PM 时间字符串存储到 MySQL 中的 TIME 数据类型中,并在显示时使用 AM PM 检索?
Posted
技术标签:
【中文标题】将 AM PM 时间字符串存储到 MySQL 中的 TIME 数据类型中,并在显示时使用 AM PM 检索?【英文标题】:store AM PM time string into TIME datatype in MySQL and retrieve with AM PM while display? 【发布时间】:2011-01-06 09:03:24 【问题描述】:我在前端输入日期为 10:00 AM、12:00 PM 等...(表示 12 小时格式)。 现在我想将该值保存在 time 数据类型列中的数据库中。如何将该 AM PM 值保存到 mysql 中的 time 数据类型中,并再次希望在前端显示附加 AM PM 的时间?
【问题讨论】:
【参考方案1】:使用带有 %p 参数的 mysql 函数 DATE_FORMAT
【讨论】:
【参考方案2】:插入:
# 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 发现的失误。
【讨论】:
首先:您不应该在查询中直接使用 $_POST ......真的。您应该首先清理这些值。但为了更好地帮助您:您是否还可以显示执行此查询的 PHP 代码? (如果您愿意,请更新您的问题,而不是发表评论。因为这样更容易阅读。谢谢)。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/…【参考方案3】:
这就是解决方案 在你看来----- $('#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'))),
演出时---------
【讨论】:
以上是关于将 AM PM 时间字符串存储到 MySQL 中的 TIME 数据类型中,并在显示时使用 AM PM 检索?的主要内容,如果未能解决你的问题,请参考以下文章
将 mysql TIME 从 24 HR 转换为 AM/PM 格式