【问题标题】:store AM PM time string into TIME datatype in MySQL and retrieve with AM PM while display?将 AM PM 时间字符串存储到 MySQL 中的 TIME 数据类型中,并在显示时使用 AM PM 检索?
【发布时间】:2011-01-06 09:03:24
【问题描述】:

我在前端输入日期为 10:00 AM12:00 PM 等...(表示 12 小时格式)。 现在我想将该值保存在 time 数据类型列中的数据库中。如何将该 AM PM 值保存到 MySQL 中的 time 数据类型中,并再次希望在前端显示附加 AM PM 的时间?

【问题讨论】:

    标签: php mysql time append


    【解决方案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'))),

      演出时---------

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-01-21
        • 2022-01-19
        • 1970-01-01
        • 1970-01-01
        • 2011-01-11
        • 2017-01-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多