mysql 时间日期转换
-- 时间戳转日期 结果:1675739945
SELECT UNIX_TIMESTAMP('2023-02-07 11:19:05')
-- 日期转时间戳 结果:2023-02-07 11:19:05
SELECT FROM_UNIXTIME('1675739945')
-- 日期转字符串 结果:2023-02-07 21:11:29
select date_format(now(),'%Y-%m-%d %H:%i:%S');
-- 字符串转日期 结果:2023-02-29 10:01:01
-- 函数:str_to_date(str,format);注:format格式必须和str的格式相同,否则返回空
select str_to_date('2023-02-07 10:01:01', '%Y-%m-%d %H:%i:%S')
-- 结果:2023-02-29 00:00:00
select str_to_date('2023-02-07 ', '%Y-%m-%d %H:%i:%S')
-- 时间戳转字符串 结果:2023-02-07 11:19:05
select from_unixtime(1675739945,'%Y-%m-%d %H:%i:%S');
datetime与timestamp的区别
- 存储方式不同,对于TIMESTAMP,它把客户端插入的时间从当前时区转化为UTC(世界标准时间)进行存储。查询时,将其又转化为客户端当前时区进行返回。而对于DATETIME,不做任何改变,基本上是原样输入和输出
- 存储的时间范围也不一样timestamp所能存储的时间范围为:’1970-01-01 00:00:01.000000’ 到 ‘2038-01-19 03:14:07.999999’。 datetime所能存储的时间范围为:’1000-01-01 00:00:00.000000’ 到 ‘9999-12-31 23:59:59.999999’。
- timestamp有一个机制是自动初始化与更新,意思就是如果插入数据的时候没有对该值进行赋值,则自动写入当前的时间戳对应的格式。在更新其他字段的时候该自动会自动更新到当前的时间
总结:
timestamp和datetime除了存储范围和存储方式不一样,没有太大区别。
如果对于跨时区的业务,TIMESTAMP更为合适,timestamp有自动初始化和更新,当你update某条记录的时候,该列值会自动更新,这是和datatime最大的区别。