FROM_UNIXTIME
功能描述
FROM_UNIXTIME函数用于将数值格式的时间戳转换为字符串类型的日期时间格式。
注意事项
该功能仅在数据库兼容模式为MySQL时能够使用(即创建DB时DBCOMPATIBILITY='B'),在其他数据库兼容模式下不能使用该特性。
语法格式
FROM_UNIXTIME(unix_timestamp[,format])
- 当函数仅传入第一个参数时返回值类型为datetime。
- 当函数传入两个参数时返回值类型为text。
参数说明
unix_timestamp
数值格式的时间戳,代表距离
'1970-01-01 00:00:00'UTC
的秒数。format
要转换的格式,可选参数。
不传入这个参数时,函数返回
'1970-01-01 00:00:00' UTC + unix_timestamp + 当前时区偏移对应的datetime
。传入这个参数时,函数会将datetime根据传入的参数进行格式化,格式化的方法与DATE_FORMAT函数相同。
示例
前置步骤: 创建并切换至兼容模式为MySQL的数据库db_mysql下。
create database db_mysql dbcompatibility 'B';
\c db_mysql;
示例1: 直接调用FROM_UNIXTIME函数。
不指定format参数。
select from_unixtime(2147483647);
返回结果如下所示:
from_unixtime --------------------- 2038-01-19 11:14:07 (1 row)
指定format参数。
select from_unixtime(2147483647,'%Y-%m-%d %H:%i:%s');
返回结果如下所示:
from_unixtime --------------------- 2038-01-19 11:14:07 (1 row)
示例2: 在DML语句中使用FROM_UNIXTIME函数。
1、创建测试表并插入数据。
CREATE TABLE test_1143823 (ts DATETIME,dt DATETIME);
INSERT INTO test_1143823 VALUES('2020-12-01 12:30:00', '2021-12-01 12:30:00');
INSERT INTO test_1143823 VALUES('2020-12-01 13:30:00', '2021-12-01 13:30:00');
INSERT INTO test_1143823 VALUES('2020-12-01 14:30:00', '2021-12-01 14:30:00');
2、在INSERT/UPDATE/DELETE语句中使用FROM_UNIXTIME函数。
INSERT INTO test_1143823 (ts) VALUES (FROM_UNIXTIME(UNIX_TIMESTAMP('2020-12-02 11:30:00')));
INSERT INTO test_1143823 (ts) VALUES (FROM_UNIXTIME(UNIX_TIMESTAMP('2020-12-03 11:30:00')));
UPDATE test_1143823
SET ts = FROM_UNIXTIME(UNIX_TIMESTAMP('2020-12-04 11:30:00'))
WHERE dt = (FROM_UNIXTIME(UNIX_TIMESTAMP('2021-12-01 14:30:00')));
DELETE FROM test_1143823
WHERE dt = FROM_UNIXTIME(UNIX_TIMESTAMP('2021-12-01 13:30:00'));
3、查询表test_1143823的数据。
SELECT * FROM test_1143823;
返回结果如下所示:
ts | dt
---------------------+---------------------
2020-12-01 12:30:00 | 2021-12-01 12:30:00
2020-12-02 11:30:00 |
2020-12-03 11:30:00 |
2020-12-04 11:30:00 | 2021-12-01 14:30:00
(4 rows)