mysql timestamp 怎么查询

mysql timestamp 怎么查询,第1张

一、当天或当日插入的数据: 1、传统对比判断:SELECT * FROM `t` WHERE DATE_FORMAT(addTime,'%Y-%m-%d') = date_format(now(),'%Y-%m-%d')")2、第一点的简写:SELECT * FROM `t` WHERE addTime >= date_format(NOW(),'%Y-%m-%d')

1. MySQL 获得当前时间函数:current_timestamp, current_timestamp()

mysql>select current_timestamp, current_timestamp()

+---------------------+---------------------+

| current_timestamp | current_timestamp() |

+---------------------+---------------------+

| 2008-08-09 23:22:24 | 2008-08-09 23:22:24 |

+---------------------+---------------------+

2. MySQL (Unix 时间戳、日期)转换函数:

unix_timestamp(),

unix_timestamp(date),

from_unixtime(unix_timestamp),

from_unixtime(unix_timestamp,format)

下面是示例:

select unix_timestamp()-- 1218290027

select unix_timestamp('2008-08-08')-- 1218124800

select unix_timestamp('2008-08-08 12:30:00')-- 1218169800

select from_unixtime(1218290027)-- '2008-08-09 21:53:47'

select from_unixtime(1218124800)-- '2008-08-08 00:00:00'

select from_unixtime(1218169800)-- '2008-08-08 12:30:00'

select from_unixtime(1218169800, '%Y %D %M %h:%i:%s %x')-- '2008 8th August 12:30:00 2008'

3. MySQL 时间戳(timestamp)转换、增、减函数:

timestamp(date) -- date to timestamp

timestamp(dt,time) -- dt + time

timestampadd(unit,interval,datetime_expr) --

timestampdiff(unit,datetime_expr1,datetime_expr2) --

请看示例部分:

select timestamp('2008-08-08')-- 2008-08-08 00:00:00

select timestamp('2008-08-08 08:00:00', '01:01:01')-- 2008-08-08 09:01:01

select timestamp('2008-08-08 08:00:00', '10 01:01:01')-- 2008-08-18 09:01:01

select timestampadd(day, 1, '2008-08-08 08:00:00')-- 2008-08-09 08:00:00

select date_add('2008-08-08 08:00:00', interval 1 day)-- 2008-08-09 08:00:00

MySQL timestampadd() 函数类似于 date_add()。

select timestampdiff(year,'2002-05-01','2001-01-01')-- -1

select timestampdiff(day ,'2002-05-01','2001-01-01')-- -485

select timestampdiff(hour,'2008-08-08 12:00:00','2008-08-08 00:00:00')-- -12

select datediff('2008-08-08 12:00:00', '2008-08-01 00:00:00')-- 7

MySQL timestampdiff() 函数就比 datediff() 功能强多了,datediff() 只能计算两个日期(date)之间相差的天数。

timestamp:占用 4 字节,内部实现是新纪元时间(1970-01-01 00:00:00)以来的秒,那么这种格式在展示给用户的时候就需要做必要的时区转换才能得到正确数据。

在进行新纪元时间(1970-01-01 00:00:00)以来的秒到实际时间之间转换的时候 MySQL 根据参数 time_zone 的设置有两种选择:

time_zone 设置为 SYSTEM 的话:使用 sys_time_zone 获取的 OS 会话时区,同时使用 OS API 进行转换。对应转换函数 Time_zone_system::gmt_sec_to_TIME

time_zone 设置为实际的时区的话:比如 ‘+08:00’,那么使用使用 MySQL 自己的方法进行转换。对应转换函数 Time_zone_offset::gmt_sec_to_TIME

实际上 Time_zone_system 和 Time_zone_offset 均继承于 Time_zone 类,并且实现了 Time_zone 类的虚函数进行了重写,因此上层调用都是 Time_zone::gmt_sec_to_TIME。

注意这种转换 *** 作是每行符合条件的数据都需要转换的。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/6122502.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-15
下一篇 2023-03-15

发表评论

登录后才能评论

评论列表(0条)

保存