将 mysql TIME 从 24 HR 转换为 AM/PM 格式

Posted

技术标签:

【中文标题】将 mysql TIME 从 24 HR 转换为 AM/PM 格式【英文标题】:Converting mysql TIME from 24 HR to AM/PM format 【发布时间】:2010-09-15 10:32:13 【问题描述】:

我想在我的网站上显示我的 mysql 表中的 TIME 字段,而不是显示 21:00:00 等,我想显示 8:00 PM。我需要一个函数/代码来执行此操作,甚至需要任何指向正确方向的指针。将带有一些代码的第一个回复标记为正确回复。

【问题讨论】:

【参考方案1】:

看看这个:http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html

我想你会想要 date_format()。

示例:DATE_FORMAT($date, "%r")

【讨论】:

它将以 AM/PM 格式显示。但是如果我想将 AM/PM 格式类型输入到 mysql 时间格式呢?【参考方案2】:

使用以下示例以 AM/PM 格式显示日期和时间数据...

SELECT DATE_FORMAT(`t`.`date_field`,'%h:%i %p') AS `date_field` FROM `table_name` AS `t`

SELECT DATE_FORMAT(`t`.`date_field`,'%r') AS `date_field` FROM `table_name` AS `t`

两者都正常工作。

【讨论】:

【参考方案3】:

您还可以使用 MYSQL 的 UNIX_TIMESTAMP() 函数将列选择为 unix 时间戳。然后用 php 格式化。 IMO 这更灵活...

select a, b, c, UNIX_TIMESTAMP(instime) as unixtime;

在 PHP 中使用 date() 函数并以任何你想要的方式格式化它。

<?php echo date('Y/m/d', $row->unixtime); ?>

我喜欢这种方法而不是在 SQL 中格式化的原因是 b/c,对我来说,日期的格式是一个显示决定&(在我看来)在 SQL 中格式化日期感觉不对...为什么要显示您的 SQL 中的逻辑?

现在 - 如果您没有在 PHP 中处理数据并且正在执行临时查询,那么DATE_FORMAT() 是您的最佳选择。但是,如果您要让数据显示在网络上,我会选择 UNIX_TIMESTAMP() 并在 PHP 中进行格式化...

我的意思是...假设您想更改日期和时间在页面上的显示方式...如果必须修改 SQL 以进行显示调整,会不会感觉“不妥”?

我的 2 美分

【讨论】:

我有一个包含我所有的日期处理代码的类。在登录代码中,我只调用该类中的一个函数,该函数使用 DATE_FORMAT() 格式化时间。所以它并没有真正显示在显示代码中,也没有感觉 Mysql 日期比 unix 时间戳更具可读性。 +1 表示“日期的格式是显示决定”确实如此,我 200% 同意你的观点【参考方案4】:

我一直在尝试这样做,并从 Google 搜索返回此页面。我在 21:00:00 的时间解决了一个问题;

使用DATE_FORMAT(&lt;field&gt;,'%l.%i%p') 返回晚上 9 点

在其周围放置一个 LOWER() 函数以返回晚上 9 点

所以完整的代码是; DATE_FORMAT(&lt;field&gt;,'%l.%i%p')

对我来说工作正常...

【讨论】:

【参考方案5】:

使用DATE_FORMAT()

DATE_FORMAT(,'%h:%i:%s %p')

DATE_FORMAT(,'%r')

【讨论】:

以上是关于将 mysql TIME 从 24 HR 转换为 AM/PM 格式的主要内容,如果未能解决你的问题,请参考以下文章

如何从 MySQL DATETIME 转换为 java.time.Instant 并在系统默认时区显示给用户?

我如何将 jenkins Build Duration 从毫秒转换为 hr:min:sec

将 24 小时值转换为 HHMMSS - 时间

有一串json字符串,我需要将其中的时间格式从yyyy-M-d转换为yyyy/M/d,用c#的正则表达式替换的方法怎么写

将unix时间转换为mysql datetime,保留一秒的分数

如何将 DateTime 转换为 MySQL 中的数字?