将 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 AM12: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 格式

将字符串解析为日期时间,同时在熊猫中考虑 AM/PM

oracle如何将am,pm时间字符串改为时间格式

日期时间的 AM/PM 转换

当用户的设备在 iOS 中设置为 24 小时制时,如何将包含“am/pm”的字符串转换为 NSDate?

如何从 PHP 中的日期时间获取 AM/PM [重复]