【问题标题】:MySql database excludes A.M, P.M, from datetime, timestamp, time, PHP, SQLMySql 数据库从日期时间、时间戳、时间、PHP、SQL 中排除 A.M、P.M
【发布时间】:2015-10-11 12:57:00
【问题描述】:

我的数据库中有三种数据类型。日期时间、时间戳和时间。我使用日期函数获取时间并尝试将其插入到所有三列下的数据库中,但所有三列都拒绝了日期函数的 A.M、P.M 部分。我不明白为什么。我还需要插入日期函数的 A.M、P.M 部分,这样我就可以按时间更有效地对数据库中的数据进行排序。是否有另一列可以存储日期的 A.M、P.M 部分,或者是否有解决方法?谢谢。

$time = date('h:i:s A');
//insert $time into all three columns into the database

【问题讨论】:

    标签: php mysql datetime time timestamp


    【解决方案1】:

    将列数据类型更改为 Varchar(20) 并插入 $time = date('h:i:s A');进入数据库。

    从数据库获取:-

    从数据库中获取此列时,您可以使用 date('h:i:s A',strtotime($fetched_datetime_from_db)).

    享受!!

    【讨论】:

      【解决方案2】:

      解决方法是使用hours 值作为24 小时制。要表示 '3:45:56 PM',请在数据库列中插入字符串值 '15:45:56'

      否则,您可以使用 STR_TO_DATE 函数将字符串转换为有效的TIME 值。

       INSERT INTO mytable (mycol) VALUES (STR_TO_DATE('3:45:56 PM','%h:%i:%s %p'))
      

      从数据库列中检索TIME 值,格式为带上午/下午的 12 小时制。

      SELECT DATE_FORMAT(mytimecol,'%h:%i:%s %p') AS mytimestr FROM ... 
      

      参考文献:

      STR_TO_DATE https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_str-to-date

      DATE_FORMAT https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format

      【讨论】:

      • 日期和时间存储在ISO8601 Format 中,这是有充分理由的。 AM/PM 是一个演示问题,而不是数据问题。
      • 这是唯一的解决方法吗?这意味着当我们从数据库中获取数据时,时间也将采用 24 小时格式,如果我们想将其转换回 12 小时格式,则必须在获取数据后逐行进行从数据库中提取,这使得它比需要的复杂得多。
      • @frosty:DATE_FORMAT 函数可用于将TIME 值格式化为您选择的字符串表示形式,包括 12 小时时钟和 AM/PM 指示器。 SELECT DATE_FORMAT(mytimecol,'%h:%i:%s %p') AS mytimestr FROM ...。用 AM/PM 表示 12 小时制的 TIME 值并没有那么复杂。
      • 如果列类型是时间,当你将数据插入到数据库中时,它不会自动将你从日期函数中得到的字符串转换为时间值吗?
      • @frosty:是的,MySQL 会“自动转换”字符串值,但它会根据 MySQL 规则进行转换。 MySQL 期望日期时间字符串的格式为'2015-07-21 16:34:25'。如果要提供不同的格式,则需要使用 STR_TO_DATE 函数告诉 MySQL 该格式是什么。
      猜你喜欢
      • 2011-12-14
      • 2013-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-09
      • 1970-01-01
      • 1970-01-01
      • 2015-01-14
      相关资源
      最近更新 更多