怎么数据库查询某一天的前几天工作日的日期

怎么数据库查询某一天的前几天工作日的日期,第1张

怎么数据库查询某一天的前几天工作日的日期

未说明A表和B表之间什么关系

这里给点参考:

--查星期几,返回数字,其中星期天为1,星期六为7

select datepart(weekday,getdate())

--查星期几,返回中文字符,如“星期四”

select datename(weekday,getdate())

--查B表记录,条件是:F1是当前日期的5天前,并且F1是工作日

select from B

where F1>= DateAdd(day,-5,GetDate()) and datepart(weekday,F1) between 2 and 6

select dateadd(day,-Datepart(weekday, getdate()+@@DateFirst -1)-6,getdate())--不管今天星期几,返回上周一

select dateadd(day,-Datepart(weekday, getdate()+@@DateFirst -1), getdate())--不管今天星期几,返回上周末

不过你要查询的话。。。时间范围的结尾不能用周末,要是周末的23:59:59,或这周一,SQL语句是select dateadd(day,-Datepart(weekday, getdate()+@@DateFirst -1)+1, getdate())

--固定查询某一天的方法如下

select avg(A1)

from Table

where (time between '2011-07-07 1:00:00' and '2011-07-07 3:00:00')

or

(time between '2011-07-07 5:00:00' and '2011-07-07 7:00:00')

group by (DATEPART(HH,time)+16)/10

--查询所有数据的方法如下

select avg(A1)

from Table

where (DATEPART(HH,time) >= 1 and DATEPART(HH,time)<3)

or

(DATEPART(HH,time)>=5 and DATEPART(HH,time)<7)

group by DATEPART(DD,time),(DATEPART(HH,time)+16)/10

我没有数据库,你自己测试一下啊。

如果你是要查询1点到3点和5点到7点的总平均数,看楼上的就行了。

SQL语句:

SELECT AAA,BBB,CCC,DDD FROM [Users] WHERE DatePart(month,dateor)=DatePart(month,getdate()) AND DatePart(day,dateor)=DatePart(day,getdate())

主要用到SQL的DATEPART函数

语法:

DATEPART ( datepart , date )

参数:

datepart

指定要返回的日期部分的参数。下表列出了 Microsoft SQL Server 2005 可识别的日期部分及其缩写。

日期部分 缩写

year yy, yyyy

quarter qq, q

month mm, m

dayofyear dy, y

day dd, d

week wk, ww

weekday dw

hour hh

minute mi, n

second ss, s

millisecond ms

week (wk, ww) 日期部分反映对 SET DATEFIRST 所做的更改。任意一年的 1 月 1 日均定义 week 日期部分的开头数字,例如:DATEPART(wk, 'Jan 1, xxxx') = 1,其中,xxxx 是任意一年。

weekday (dw) 日期部分返回与一周的某一天对应的数字,例如:Sunday = 1, Saturday = 7。weekday 日期部分生成的数字取决于 SET DATEFIRST 所设置的值。这设置一周中的第一天。

date

表达式,用于返回 datetime 或 smalldatetime 值,或日期格式的字符串。仅对 1753 年 1 月 1 日之后的日期使用 datetime 数据类型。将之前的日期存储为字符数据。当输入 datetime 值时,应始终将其放入引号中。由于 smalldatetime 只精确到分钟,所以在使用 smalldatetime 值时,秒和毫秒始终为 0。

如果只指定年份的后两位数字,则小于或等于 two-digit year cutoff 配置选项值的后两位数字的值将与截止年份处于同一世纪中。比此选项值的后两位数字大的值先于截止年份的世纪。例如,如果 two-digit year cutoff 是 2049(默认值),则 49 将被解释为 2049,而 50 则将被解释为 1950。为了避免产生歧义,请使用四位年份。 答案补充 回答中,字段dateor为生日,datetime型

SQL数据库中getDate()函数作用是获取系统当前时间。

语法功能

功 能: GETDATE() 函数从 SQL Server 返回当前的时间和日期。

列:SELECT GETDATE() AS CurrentDateTime

扩展资料:

函数名: getdate

功 能: 取DOS日期

用 法: void getdate(struct dateblk);

程序例:

#include<stdioh>

#include <dosh>

int main(void)

{

struct date d;

getdate(&d);

printf("The current year is: %d\n",

dda_year);

printf("The current day is: %d\n",

dda_day);

printf("The current month is: %d\n",

dda_mon);

return 0;

}

year()函数是VBScript中用的,你现在要先使用SQL语句获取当前的年和月,当然要用T-SQL中的函数了,DATEPART ( datepart , date ) ,sql语句应该改为:sql="select from news where DATEPART(yy,infotime)="&syear&" and DATEPART(mm,infotime)="&smonth&"

个人觉得难点在每隔2小时怎么取, 我的方式是取日期(0时0分0秒)然后加上小时数除以2作为标志每2小时的时间间隔(如果时间间隔不是整的小时, 且可以被24整除, 那么尚未想到好的方法); 而取前3条记录则有row_number分组函数可以使用

示例(SQL Server 2005或以上)如下:

declare @tb table (ss int, dt datetime) -- 定义表变量

insert into @tb        -- 插入测试用数据

select 1, '2013/1/20 12:01'

union

select 7, '2013/1/20 12:01'

union

select 3, '2013/1/20 13:21'

union

select 8, '2013/1/20 13:13'

union

select 5, '2013/1/20 12:049'

-- 测试SQL, dt为时间值, hourSpan为分在哪个时间间隔内

select ss, dt, hourSpan

from (

-- 用row_number来按时间间隔分组编号, 且按ss字段升序编号

select ss, row_number() over (partition by convert(nvarchar(10), dt, 120) + '_' + cast(datepart(hour, dt) / 2 as nvarchar(2)) order by ss) as rownumber, dt, convert(nvarchar(10), dt, 120) + '_' + cast(datepart(hour, dt) / 2 as nvarchar(2)) as hourSpan

from @tb

) s

where srownumber <= 3 -- 取分组编号值小于等于3的记录

将这个逻辑套用过去, 大概能满足你的需求 不过, 如果是经常执行这样的查询, 建议建一个字段存此时间间隔值或使用视图, 不然每次查询都有计算, 速度不好

以上就是关于怎么数据库查询某一天的前几天工作日的日期全部的内容,包括:怎么数据库查询某一天的前几天工作日的日期、每天数据库要查询资料,日期条件为上周一至上周日、SQL server 2008问题: TABLE中有time列和A1列 ,如何查询一天之内TIME在1点到3点和5点到7点的A1列的AVG等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/sjk/10196353.html

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

发表评论

登录后才能评论

评论列表(0条)

保存