① sql如何查询一段时间内每个周期里面数值最大的数据
10秒计算公式如下
select
sysdate,sysdate+
10/24/60/60
from
al;
select
*
from
table_name
where
字段>=sysdate
and
字段
<=
sysdate+
10/24/60/60
;
如果要进行10秒为周期查询一次数据,数据需要写入到临时表,数据库会专压力很大
需要做个定时运
属行
就可以了
② SQL 中一个字段为年加周期,比如1145就是2011年第45周,如何从1145计算到对应的日期
select to_date(substr('1145',1,2)||'-01-01','yy-mm-dd')+substr('1145',3,2)*7 from al
把上面的'1145'换成列名,al换成表名就行了!
如果45周第一天到第七天,把substr(列名,3,2)*7-6, substr(列名,3,2)*7就是了
③ SQL关于时间段的问题
不知道你用的是什么DB, 如果是MS SQLServer 或者 Oracle 的话,制作一个触发器就可以了, 我以Ms SQLServer 为例子做了一个,由于你的条件写得不是很清楚,表格所需要的质量缺陷和合格率的统计要你自己来做了。已经用我自己做的表格测试完毕,没有问题,剩下的就看你自己了。
USE [自己的DB]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:<Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE PROCEDURE proc_getPassRateList()
AS
BEGIN
declare @terms int; -- 统计周期
declare @minDate datetime; -- 开始日期
declare @maxDate datetime; -- 结束日期
declare @daysCnt int; -- 天数
set @terms = 14; -- 周期为14
set @minDate = '2009-01-01'; -- 自己任意设定
set @maxDate = (select getdate()); -- 结束日期为系统日期的今天
set @daysCnt = (select datediff(day, @minDate, dateadd(day, 1, getdate()))); -- 计算用的总天数
-- 建立临时表格
CREATE TABLE #passList(
id int identity(1,1) not null,
quality_def varchar(50) not null,
pass_rate smallint not null,
start_date datetime not null,
end_date datetime not null
CONSTRAINT [PK_passList] PRIMARY KEY CLUSTERED
(
id ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
while(@terms < @daysCnt)
begin
if @daysCnt-(@terms%@daysCnt) >= 14 and @mindate < getdate()
begin
insert into #passList
select a.质量缺陷, a.不合格数量/a.受检数量*100%, b.startDate, b.endDate from table a left join ( select @minDate as startDate,dateadd(day, 14, @minDate) as endDate ) b on a.统计日期 >= b.startDate and a.统计日期<= b.enddate group by a.质量缺陷 order by a.统计日期 asc
end
else
begin
break;
end
set @terms = @terms+14 -- 周期+14
set @minDate = dateadd(day, 15, @minDate) -- 开始日期+15天
end
SELECT * FROM #passList order by id ASC
DROP TABLE #passList
END
④ 设置SQL自动备份,备份发生时间和保留数据周期是多少
备份发生时间尽量选择服务器负载小时,比如凌晨、中午。
备份周期和保存备份文件的时间要看数据库的重要性了。如果数据比较重要,数据变化很频繁,可以半天一备份,数据保存一各月。如果数据变化不太频繁,甚至可以一周备份一次,数据保存3个月。
⑤ sql 按时间分类查询数据,比如:按一天时间段分类查询访问次数查询语句怎么写举个例子
如果你的时间段是均匀的,比如一天24小时内,每4个小时为一个周期,那么可以这么写
select coutn(ID) from T group by trunc (to_char(time,'hh24') / 4)
--to_char(time,'hh24')是取出小时部分,trunc是求商,把小时部分除以4,则每4个小时内的都会在一起
如果时间段不均匀,那么只能每个时间段单独写了
示例
select count(ID) from T where to_char(time,'hh24')<结束时间 and to_char(time,'hh24') >=开始时间
⑥ sql语句怎么写:在一段时间内,周期是一小时,查询每个周期里是否有某个值
我的是SQL Server 2008 R2,可以这么做:
SQL Server Management Studio->登录->作业(对象资源管理器最后一项)->右键新建作业->填好“常规”然后把你要做的事情写到“步骤”里,再在“计划”里新建个执行时间/间隔,其它根据你的需求再弄吧
⑦ SQL数据库 怎么自定义哪一天到哪一天为一周
select datename(week,getdate())--------计算今天是第几周
用这个函数你就可以知道哪些天是一周
into #a
select 日期,datename(week,日期) as 周别
查询周别一样的数据就可以了
⑧ SQL语句怎么写 数据列 开始时间 结束时间 考勤周期为上月21日至本月20日 现在我开始时间
不好意思刚才看错了
用DATEDIFF(d,开始时间,上月21号的时间)>=0
用DATEDIFF(d,本月20号的时间,结束时间)>=0
其中时间类型要一致,如:
select DATEDIFF(d,'2014-08-13 17:05:41','2014-08-16 17:05:41')
结果是3
这两个来作为where,就可以了
⑨ sql以7天为一个周期,计算一年中哪个周期中出生的学生数量最多
比如在A2单元格输入的是:2016/5/4 那么在A2单元格输入公式:=A2+7 然后下拉即可。
更多关于sql以7天为一个周期,计算一年中
⑩ 求一条SQL语句算出每年的周期问题!
-- 这里设置 星期一 为 每周的第一天。
SET DATEFIRST 1
GO
SELECT
YEAR(everyDay) AS [年份],
DATEPART(ww, everyDay) AS [周期],
MIN(everyDay) AS [起始日期],
MAX(everyDay) AS [结束日期]
FROM
(
SELECT
Convert(datetime, '2011-01-01', 120) + number AS everyDay
FROM
master..spt_values
WHERE
type='P'
AND Convert(datetime, '2011-01-01', 120) + number < Convert(datetime, '2012-01-01', 120)
) tempView
GROUP BY
YEAR(everyDay),
DATEPART(ww, everyDay)
GO
年份 周期 起始日期 结束日期
2011 1 2011-01-01 00:00:00.000 2011-01-02 00:00:00.000
2011 2 2011-01-03 00:00:00.000 2011-01-09 00:00:00.000
2011 3 2011-01-10 00:00:00.000 2011-01-16 00:00:00.000
2011 4 2011-01-17 00:00:00.000 2011-01-23 00:00:00.000
2011 5 2011-01-24 00:00:00.000 2011-01-30 00:00:00.000
。。。。。。