mysql如何获取到每天的某一个特定时间段的数据

mysql如何获取到每天的某一个特定时间段的数据,第1张

问题:

仅用慢日志文件,如何快速获取分时报告?

如果有监控系统,获取分时报告(每小时慢查询的条数报告)不难,如果只有慢日志文件,就会有点费劲。

实验:

通过 pt-query-digest --timeline 功能,可以输出带时间戳的慢查询条目

用 sed 将 timeline 报告滤出

安装 termsql

使用 termsql,将报告导入,并使用 SQL 查询一条记录,以展示 termsql 的效果

可以看到 termsql 将 timeline 报告的每一行,整理成了一条数据,放在 SQLite 中。

下面就可以尽情使用 SQL 获取分时报告:

用一个复杂一点慢日志,获得如下结果:

可以轻松定位到慢查询的热点时段,也便于发现业务的周期性规律。

termsql 是一个很方便的小工具:

1 可以用于将文本导出到 SQLite 中,方便 SQL 查询。

2 它与 ps 或者 top 合用也有惊喜,比如找出 CPU 占用率高于 25% 的进程:

MySQL数据库中year()函数是求某个特定日期中的年份,代码如下:

select '2015-08-11' as date,year('2015-08-11') as year;

确定一个日期是一年中的第几个季度,可以用QUARTER()函数实现,代码如下:

SELECT '2015-08-11' AS DATE,QUARTER('2015-08-11') AS QUARTER;

返回一个日期是一年中的月份,利用month()函数实现,代码如下:

SELECT '2015-08-11' AS DATE,MONTH('2015-08-11') AS MONTH;

获取一个确定日期是一个月份中的多少号,可以用day()函数求得,具体实现代码如下:

SELECT '2015-08-11' AS DATE,DAY('2015-08-11') AS DAY;

有时日期中带有时间,而如何获取小时数,这可以利用自带的函数hour()实现,代码如下:

SELECT '2015-08-11 12:20:45' AS DATE,HOUR('2015-08-11 12:20:45') AS HOUR;

求取日期时间中的分钟数,可以利用MINUTE()函数实现,代码如下:

SELECT '2015-08-11 12:20:45' AS DATE,MINUTE('2015-08-11 12:20:45') AS MINUTE;

最后,获取时间中的秒数,利用SECOND()函数实现,代码如下:

SELECT '2015-08-11 12:20:45' AS DATE,SECOND('2015-08-11 12:20:45') AS SECOND;

mysql 日期时间查询

MySQL数据库中year()函数是求某个特定日期中的年份,代码如下:

select '2015-08-11' as date,year('2015-08-11') as year;

确定一个日期是一年中的第几个季度,可以用QUARTER()函数实现,代码如下:

SELECT '2015-08-11' AS DATE,QUARTER('2015-08-11') AS QUARTER;

返回一个日期是一年中的月份,利用month()函数实现,代码如下:

SELECT '2015-08-11' AS DATE,MONTH('2015-08-11') AS MONTH;

获取一个确定日期是一个月份中的多少号,可以用day()函数求得,具体实现代码如下:

SELECT '2015-08-11' AS DATE,DAY('2015-08-11') AS DAY;

有时日期中带有时间,而如何获取小时数,这可以利用自带的函数hour()实现,代码如下:

SELECT '2015-08-11 12:20:45' AS DATE,HOUR('2015-08-11 12:20:45') AS HOUR;

年日月:curdate()或者current_date()

时分秒:curtime()或者current_time()

如果想截取一个timestamp的年日月或者时分秒可以用date()跟time()函数

比如time(current_timestamp()),date(current_timestamp())

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)之间相差的天数。

在oracle中:select sysdate from dual,而且必须加上from dual,否则报错,只支持sysdate ,和mysql不一样,mysql的是sysdate()函数;

在mysql中写法:

select SYSDATE();

select now();

select SYSDATE() from dual;

select now() from dual;

mysql中(1)可以加上from dual,可以不加;(2)有两个函数,分别是SYSDATE() 和 now() 函数;

当一个人找不到出路的时候,最好的办法就是将当前能做好的事情做到极致,做到无人能及。

以上就是关于mysql如何获取到每天的某一个特定时间段的数据全部的内容,包括:mysql如何获取到每天的某一个特定时间段的数据、如何利用MySQL函数查询特定的日期时间、mysql 日期时间查询等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/web/9615038.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存