MySql查询具体某个时间段数据,结果集如何补全该时间段的所有记录并且标记为空值(时间显示除外)

MySql查询具体某个时间段数据,结果集如何补全该时间段的所有记录并且标记为空值(时间显示除外),第1张

我们通过 performance_schema 观察了 memory 引擎的内存分配,由此推算了内部临时表的内存占用情况。

MySQL 在其他元数据中,诸如 information_schema.INNODB_TEMP_TABLE_INFO 中,并不展示内部临时表的信息,如图:

另外值得注意的是:memory 引擎会多划分出不少空间,比如本例中我们的数据是 300025 行 * 4 字节 =~ 1.2M,而引擎分出了 4M 多的内存来进行存储。

因此如果进行估算时,需要将数据量乘以一个较大的系数,才能准确估算。

根据你的数据,给你个例子,其中的数据类型不一定和你的完全一样,需要你自己根据你的实际情况去调整:

--创建表

--create table [table](dtime datetime, data varchar(10), num smallint)

--添加测试数据

--insert into [table] select '2002-9-8' ,'data1',0

--insert into [table] select '2002-9-10' ,'data1',3

--insert into [table] select '2002-9-11' ,'data1',4

--测试语句

select * from [table]

--你需要的效果

declare @d table(time datetime)

declare @date datetime

set @date='2002-09-07'

while @date<='2002-09-12'

    begin

      insert @d select @date

      set @date= dateadd(dd,1,cast(@date as datetime))

    end

select convert(varchar(10),time,120) as time

, isnull(data, 'data1') as data

,isnull(num, 0) as num

from @d d left join [table] t

on convert(varchar(10),dtime,120) = convert(varchar(10),time,120)

最终结果:

具体还有什么其他想法,可以参考我的博客:

http://blog.sina.com.cn/s/blog_9f39f0c70102ux87.html

里面的第五点,标题是"5、按月统计查询"

mysql有丰富的时间函数:

ADDTIME (date2 ,time_interval ) //将time_interval加到date2

CONVERT_TZ (datetime2 ,fromTZ ,toTZ ) //转换时区

CURRENT_DATE ( ) //当前日期

CURRENT_TIME ( ) //当前时间

CURRENT_TIMESTAMP ( ) //当前时间戳

DATE (datetime ) //返回datetime的日期部分

DATE_ADD (date2 , INTERVAL d_value d_type ) //在date2中加上日期或时间

DATE_FORMAT (datetime ,FormatCodes ) //使用formatcodes格式显示datetime

DATE_SUB (date2 , INTERVAL d_value d_type ) //在date2上减去一个时间

DATEDIFF (date1 ,date2 ) //两个日期差

DAY (date ) //返回日期的天

DAYNAME (date ) //英文星期

DAYOFWEEK (date ) //星期(1-7) ,1为星期天

DAYOFYEAR (date ) //一年中的第几天

EXTRACT (interval_name FROM date ) //从date中提取日期的指定部分

MAKEDATE (year ,day ) //给出年及年中的第几天,生成日期串

MAKETIME (hour ,minute ,second ) //生成时间串

MONTHNAME (date ) //英文月份名

NOW ( ) //当前时间

SEC_TO_TIME (seconds ) //秒数转成时间

STR_TO_DATE (string ,format ) //字串转成时间,以format格式显示

TIMEDIFF (datetime1 ,datetime2 ) //两个时间差

TIME_TO_SEC (time ) //时间转秒数]

WEEK (date_time [,start_of_week ]) //第几周

YEAR (datetime ) //年份

DAYOFMONTH(datetime) //月的第几天

HOUR(datetime) //小时

LAST_DAY(date) //date的月的最后日期

MICROSECOND(datetime) //微秒

MONTH(datetime) //月

MINUTE(datetime) //分返回符号,正负或0

SQRT(number2) //开平方

以上函数仅供参考,详细的可以查看雷雪松的博客。


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存