MySQL 时间戳和日期之间的转换、格式化时间

本文详细介绍MySQL中如何使用FROM_UNIXTIME和UNIX_TIMESTAMP函数进行时间戳与日期的相互转换,以及DATE_FORMAT函数对日期进行格式化的方法。文章还提供了丰富的示例,帮助读者理解和掌握这些常用的时间日期操作技巧。

一、将时间戳转换为日期

使用Mysql格式化函数FROM_UNIXTIME(timestamp,format

其中两个参数:

        1、timestamp 是时间戳 数字

        2、format 是格式化格式(可不加)

参考如下:

SELECT FROM_UNIXTIME(1557277397 , '%Y-%m-%d %H:%i:%s');
SELECT FROM_UNIXTIME(1557277397);

查询结果相同:2019-05-08 09:03:17

二、  将日期格式化为时间戳

使用Mysql格式化函数UNIX_TIMESTAMP(time

其中参数:

        time  是需要格式化的时间

参考如下:

SELECT UNIX_TIMESTAMP('2019-05-08 09:03:00'); 
SELECT UNIX_TIMESTAMP('2019-05-08 09:03'); 

查询结果相同:1557277380

三、格式化时间

使用Mysql格式化函数DATE_FORMAT(dateformat)

其中两个参数:

        1、date 是需要格式化的时间

        2、format 是格式化的格式

参考如下:

SELECT DATE_FORMAT(NOW(), '%Y-%m-%d'); 
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s'); 

查询结果:

    2019-05-09

    2019-05-09 15:36:04

format参数格式
格式介绍
%M月名字(January...December)
%W星期名字(Sunday...Saturday)
%D带有英文前缀的月中的天(1st2nd3rd、等等。)
%Y年,数字,
%y年,数字,
%a缩写星期名(Sun...Sat)
%d月的天,数值(01...31)
%e月的天,数值(1...31)
%m月,数字(01...12)
%c月,数字(1...12)
%b缩写月份名字(Jan...Dec)
%j一年的中的天数 (001-366)
%H小时 (00-23)
%k小时 (0-23)
%h小时 (01-12)
%I小时 (01-12)(大写的i
%l小时 (1-12)(小写的L
%i分钟,数值(00...59)
%r时间,12-小时(hh:mm:ss AM 或 PM)
%T时间, 24-小时 (hh:mm:ss)
%S秒(00-59)
%s秒(00-59)
%pAM 或 PM
%w一周的天数 0=星期日... 6=星期六)
%U周 (00-53) 星期日是一周的第一天
%u周 (00-53) 星期一是一周的第一天
### MySQL 时间戳日期格式的方法 在 MySQL 中,可以使用 `DATE_FORMAT()` 函数将时间戳 (`TIMESTAMP`) 转换为指定的日期格式[^2]。`DATE_FORMAT()` 的语法如下: ```sql SELECT DATE_FORMAT(timestamp_column, '%Y-%m-%d %H:%i:%s') AS formatted_date; ``` 其中 `%Y`, `%m`, `%d`, `%H`, `%i`, `%s` 是占位符,分别表示年份、月份、日期、小时、分钟秒。 如果目标是从 `TIMESTAMP` 类型的数据列中提取特定格式的日期,则可以直接调用该函数。例如: ```sql SELECT DATE_FORMAT('2024-05-29 15:23:45', '%Y年%m月%d日 %H时%i分%s秒') AS formatted_datetime; -- 结果:2024年05月29日 15时23分45秒 ``` 需要注意的是,在某些情况下,当通过 MyBatis 或其他 ORM 工具查询数据并将其映射到 Java 实体类时,可能会遇到类型不匹配的问题。比如,如果 SQL 查询返回的结果是一个经过 `DATE_FORMAT()` 处理后的字符串,而实体类中的字段定义为 `java.util.Date` 类型,则会抛出类似于 `DataConversionException` 的异常][^[^34]。解决方法之一是将对应的字段改为 `String` 类型来存储格式化日期字符串。 另外,对于需要高精度支持的情况(如毫秒级),MySQL 提供了带有微秒精度的时间戳功能[^1]。可以通过设置数据库表结构中的字段类型为 `DATETIME(6)` 或者 `TIMESTAMP(6)` 来保存包含毫秒甚至更精细单位的时间值。 #### 示例代码 假设有一张名为 `example_table` 的表格,其包含一列 `created_at TIMESTAMP` 字段,现在希望获取此字段按自定义格式显示的结果: ```sql SELECT created_at, DATE_FORMAT(created_at, '%Y/%m/%d %H:%i:%s') AS custom_format FROM example_table; ``` 上述语句将会把原始的时间戳转换成形如 “YYYY/MM/DD HH:MM:SS” 的形式展示出来。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值