mysql格式化日期

本文介绍MySQL中使用DATE_FORMAT()及FROM_UNIXTIME()函数将时间戳转换为易读格式的方法,并提供实际应用案例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近因为工作需要,要使用mysql查询记录可如果有时间戳字段时,查看结果不方便,不能即时看到时间戳代表的含义,

所以这篇文章就提供mysql格式换时间函数,可以方便的看到格式化后的时间。有需要的朋友们可以参考借鉴,下面来一起看看吧。

常用:DATE_FORMAT(SJ,'%Y-%c-%d %H:%i:%s') as SJ

1. DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据。

?
1
DATE_FORMAT( date ,format)

format参数的格式有

%a缩写星期名
%b缩写月名
%c月,数值
%D带有英文前缀的月中的天
%d月的天,数值(00-31)
%e月的天,数值(0-31)
%f微秒
%H小时 (00-23)
%h小时 (01-12)
%I小时 (01-12)
%i分钟,数值(00-59)
%j年的天 (001-366)
%k小时 (0-23)
%l小时 (1-12)
%M月名
%m月,数值(00-12)
%pAM 或 PM
%r时间,12-小时(hh:mm:ss AM 或 PM)
%S秒(00-59)
%s秒(00-59)
%T时间, 24-小时 (hh:mm:ss)
%U周 (00-53) 星期日是一周的第一天
%u周 (00-53) 星期一是一周的第一天
%V周 (01-53) 星期日是一周的第一天,与 %X 使用
%v周 (01-53) 星期一是一周的第一天,与 %x 使用
%W星期名
%w周的天 (0=星期日, 6=星期六)
%X年,其中的星期日是周的第一天,4 位,与 %V 使用
%x年,其中的星期一是周的第一天,4 位,与 %v 使用
%Y年,4 位
%y年,2 位

例子:

?
1
2
3
4
DATE_FORMAT(NOW(), '%b %d %Y %h:%i %p' )
DATE_FORMAT(NOW(), '%m-%d-%Y' )
DATE_FORMAT(NOW(), '%d %b %y' )
DATE_FORMAT(NOW(), '%d %b %Y %T:%f' )

输出结果:

?
1
2
3
4
Dec 29 2008 11:45 PM
12-29-2008
29 Dec 08
29 Dec 2008 16:25:46

2. MySQL 格式化函数 FROM_UNIXTIME()

?
1
2
3
SELECT FROM_UNIXTIME( date , '%Y-%c-%d %h:%i:%s' ) as post_date ,
date_format(NOW(), '%Y-%c-%d %h:%i:%s' ) as post_date_gmt
FROM `article` where outkey = 'Y'

1、FROM_UNIXTIME( unix_timestamp )

参数:一般为10位的时间戳,如:1417363200

返回值:有两种,可能是类似 'YYYY-MM-DD HH:MM:SS' 这样的字符串,也有可能是类似于 YYYYMMDDHHMMSS.uuuuuu 这样的数字,具体返回什么取决于该函数被调用的形式。

?
1
2
3
4
5
6
7
mysql> select FROM_UNIXTIME(1344887103);
+ ---------------------------+
| FROM_UNIXTIME(1344887103) |
+ ---------------------------+
| 2012-08-14 03:45:03  |
+ ---------------------------+
1 row in set (0.00 sec)

2、FROM_UNIXTIME( unix_timestamp ,format ) 

参数 unix_timestamp :与方法 FROM_UNIXTIME( unix_timestamp ) 中的参数含义一样; 

参数 format : 转换之后的时间字符串显示的格式; 

返回值:按照指定的时间格式显示的字符串;

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
mysql> select FROM_UNIXTIME(1344887103, '%Y-%M-%D %h:%i:%s' );
+ -----------------------------------------------+
| FROM_UNIXTIME(1344887103, '%Y-%M-%D %h:%i:%s' ) |
+ -----------------------------------------------+
| 2012-August-14th 03:45:03      |
+ -----------------------------------------------+
1 row in set (0.00 sec)
mysql> select FROM_UNIXTIME(1344887103, '%Y-%m-%D %h:%i:%s' );
+ -----------------------------------------------+
| FROM_UNIXTIME(1344887103, '%Y-%m-%D %h:%i:%s' ) |
+ -----------------------------------------------+
| 2012-08-14th 03:45:03       |
+ -----------------------------------------------+
  
1 row in set (0.00 sec)

3、判断是不是同一天:

?
1
2
3
4
5
6
7
8
SELECT tbl_gamedata.GameMapName,tbl_playerdata.GameMode, tbl_gamedata.MatchMode, tbl_playerdata.GameResult, SUM (tbl_playerdata.GameIsWin) AS tday_winCount,
    SUM (tbl_playerdata.AssistCount) AS tday_assistCount, SUM (tbl_playerdata.KillCount) AS tday_killCount,
    SUM (tbl_player_title.ThreeKill) AS tday_threeKill, SUM (tbl_player_title.FourKill) AS tday_fourKill, SUM (tbl_player_title.FiveKill) AS tday_fiveKill
  FROM tbl_playerdata
   LEFT JOIN tbl_gamedata ON tbl_playerdata.GameID = tbl_gamedata.GameID
   LEFT JOIN tbl_player_title ON tbl_player_title.GameID = tbl_playerdata.GameID AND tbl_player_title.PlayerID = tbl_playerdata.PlayerID
  WHERE tbl_playerdata.PlayerID = user_id AND (tbl_playerdata.GameResult = 2 OR tbl_playerdata.GameResult = 3) AND TO_DAYS(FROM_UNIXTIME(tbl_playerdata.GameStartTime)) = TO_DAYS(NOW())
  GROUP BY tbl_gamedata.GameMapName, tbl_playerdata.GameMode,tbl_gamedata.MatchMode,tbl_playerdata.GameResult;

其中TO_DAYS(FROM_UNIXTIME(tbl_playerdata.GameStartTime)) = TO_DAYS(NOW()) 就是我们需要的判断

### MySQL格式化时间的解决方案与语法示例 在 MySQL 中,可以使用 `DATE_FORMAT()` 和 `TIME_FORMAT()` 函数来格式化日期时间数据。这些函数允许用户以自定义的方式展示日期时间字段的内容。 以下是一个关于如何使用 `DATE_FORMAT()` 和 `TIME_FORMAT()` 的具体示例: #### 格式化时间的示例 假设有一个名为 `events` 的表,其中包含一个 `event_time` 列,类型为 `TIME`。可以通过以下 SQL 查询将时间格式化为不同的字符串形式: ```sql SELECT event_time, DATE_FORMAT(event_time, '%H:%i:%s') AS formatted_time_24hr, TIME_FORMAT(event_time, '%h:%i %p') AS formatted_time_12hr FROM events; ``` - 在上述查询中,`DATE_FORMAT(event_time, '%H:%i:%s')` 将时间格式化为 24 小时制的 `HH:MM:SS` 格式[^1]。 - 同时,`TIME_FORMAT(event_time, '%h:%i %p')` 将时间转换为 12 小时制,并附加上午(AM)或下午(PM)标识[^2]。 #### 常见的时间格式化字符 以下是常用的格式化字符及其含义: - `%H`: 24 小时制小时数 (00-23) - `%h`: 12 小时制小时数 (01-12) - `%i`: 分钟数 (00-59) - `%s`: 秒数 (00-59) - `%p`: 上午或下午 ('AM' 或 'PM') 例如,如果 `event_time` 的值为 `14:30:45`,则结果如下: - `formatted_time_24hr`: `14:30:45` - `formatted_time_12hr`: `02:30 PM` #### 注意事项 需要注意的是,`DATE_FORMAT()` 和 `TIME_FORMAT()` 虽然功能相似,但它们适用的场景略有不同。`DATE_FORMAT()` 更适合处理完整的日期时间组合,而 `TIME_FORMAT()` 专注于时间部分的格式化[^1]。 ```sql -- 示例:仅格式化时间部分 SELECT TIME_FORMAT('14:30:45', '%h:%i %p') AS formatted_time; ``` 上述查询将返回 `02:30 PM`。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值