当前位置:首页 » 编程语言 » sql话语有自然周的信息吗
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql话语有自然周的信息吗

发布时间: 2023-05-22 14:28:48

⑴ 各位高手!请问在sql Server 中日期函数.如何取到与当前时间相比最近一周或一个月的信息啊

dayadd方法伏芦辩就可以缺缺了
dayadd(wk,-1,getdate())
dayadd(mm,-1,getdate())
或者在c#里用datetime的addday或者addmonth都哗伏可以

⑵ 求统计每周记录数的SQL语句

新建一个周信息表,存储周信息(周号、周开始时间、周结束时间)
你的周是按照自然周,还是按月结的周?自然周就不用说了,正常的周一到周日。按月结的,就是所有的周都落在一个月内,不会存在跨月的情况。比如2010年1月第一周就是 2010年1月1日到2010年1月9日,这样一周可能大于七天,也可能小于7天。

按照自然周的给你个方法:

create table bga050t (weak_no varchar(10),
strt_dt datetime,
end_dt datetime
CONSTRAINT [PK_bga050t] PRIMARY KEY CLUSTERED
(
[weak_no]
) ON [PRIMARY]
)

declare @weak_no varchar(18)
declare @strt_dt datetime
declare @end_dt datetime
declare @n int

set @n=1
set @strt_dt = '2007-12-31'
set @weak_no = ''

WHILE(@strt_dt < '2021-01-04')
BEGIN
IF @weak_no<>left(convert(varchar(10),@strt_dt,120),8)
BEGIN
set @weak_no=left(convert(varchar(10),@strt_dt,120),8)
set @n=1
end
set @end_dt= dateadd(d,6,@strt_dt)
insert into bga050t (weak_no,strt_dt,end_dt)
values(@weak_no+convert(varchar,@n),@strt_dt,@end_dt)

set @n=@n+1
set @strt_dt=dateadd(d,1,@end_dt)
END

你要查询年月周只需要把周号分解就可以了。

select a.* from 表 inner join
bga050t b on a.dt between b.strt_dt and b.end_dt
where left(b.weak_no,7)='2009-02' and [周数] = right(b.weak_no,1)

⑶ sql语句查询一星期的信息 语句怎么写

字段中必须要有涉及到时间范围的字段

根据当前日期,计算出一星期的日期范围。然后把条件写入where就可以了。

⑷ 怎样从数据库中查询一周内的信息

使用sql语句查询日期在一周内的数据
select * from ShopOrder where datediff(week,ordTime,getdate()-1)=0 //查询当天日期在一周年的数据
select * from ShopOrder where datediff(day,ordTime,getdate()-1)=0 //查询当天的所有数据
SELECT * FROM A where datediff(d,datetime,getdate()) <=30 //前30天
SELECT * FROM A WHERE DATEDIFF(m, shijian, GETDATE()) <=1 // 上一月
--查询当天:
select * from info where DateDiff(dd,datetime,getdate())=0

--查询24小时内的:
select * from info where DateDiff(hh,datetime,getDate())<=24

--info为表名,datetime为数据库中的字段值
--查询当天:
select * from info where DateDiff(dd,datetime,getdate())=0
--查询24小时内的:
select * from info where DateDiff(hh,datetime,getDate())<=24
--info为表名,datetime为数据库中的字段值
Sql代码
--查询当天记录另类的方法
SELECT *
FROM j_GradeShop
WHERE (GAddTime BETWEEN CONVERT(datetime, LEFT(GETDATE(), 10) + ' 00:00:00.000')
AND CONVERT(datetime, LEFT(GETDATE(), 10) + ' 00:00:00.000') + 1)
ORDER BY GAddTime DESC
--查询当天记录另类的方法
SELECT *
FROM j_GradeShop
WHERE (GAddTime BETWEEN CONVERT(datetime, LEFT(GETDATE(), 10) + ' 00:00:00.000')
AND CONVERT(datetime, LEFT(GETDATE(), 10) + ' 00:00:00.000') + 1)
ORDER BY GAddTime DESC
DATEDIFF 函数:
语法:
DATEDIFF ( datepart , startdate , enddate )
备注:enddate 减去 startdate。如果 startdate 晚于 enddate,则返回负值。
如果结果超出整数值范围,则 DATEDIFF 将产生错误。对于毫秒,最大数是 24 天 20 小时 31 分钟零 23.647 秒。对于秒,最大数是 68 年。
跨分钟、秒和毫秒等边界计算的方法使得 DATEDIFF 指定的结果在所有数据类型中均一致。结果是带正负号的整数值,它等于跨第一个和第二个日期间的 datepart 边界数。例如,在 1 月 4 日(星期日)和 1 月 11 日(星期日)之间的星期数是 1。
可以再MSSQL中测试:
Sql代码
--两个时间差刚好是24
--打印的方式
print dateDiff(hh,'2009-1-1 0:0:0','2009-1-2 0:0:0')
--查询的方式
print dateDiff(hh,'2009-1-1 0:0:0','2009-1-2 0:0:0')
--两个时间差刚好是24
--打印的方式
print dateDiff(hh,'2009-1-1 0:0:0','2009-1-2 0:0:0')
--查询的方式
print dateDiff(hh,'2009-1-1 0:0:0','2009-1-2 0:0:0')
Sql代码
--本月记录
SELECT * FROM 表 WHERE datediff(month,[dateadd],getdate())=0
--本周记录
SELECT * FROM 表 WHERE datediff(week,[dateadd],getdate())=0
--包括本年这些查询方式是一样的
--本月记录
SELECT * FROM 表 WHERE datediff(month,[dateadd],getdate())=0
--本周记录
SELECT * FROM 表 WHERE datediff(week,[dateadd],getdate())=0
--包括本年这些查询方式是一样的

sql server中的时间函数
1. 当前系统日期、时间
select getdate()
2. dateadd 在向指定日期加上一段时间的基础上,返回新的 datetime 值
例如:向日期加上2天
select dateadd(day,2,'2004-10-15') --返回:2004-10-17 00:00:00.000
3. datediff 返回跨两个指定日期的日期和时间边界数。
select datediff(day,'2004-09-01','2004-09-18') --返回:17
4. datepart 返回代表指定日期的指定日期部分的整数。
SELECT DATEPART(month, '2004-10-15') --返回 10
5. datename 返回代表指定日期的指定日期部分的字符串
SELECT datename(weekday, '2004-10-15') --返回:星期五
6. day(), month(),year() --可以与datepart对照一下
select 当前日期=convert(varchar(10),getdate(),120)
,当前时间=convert(varchar(8),getdate(),114)
select datename(dw,'2004-10-15')
select 本年第多少周=datename(week,'2004-10-15')
今天是周几=datename(weekday,'2004-10-15')
函数 参数/功能
GetDate( ) 返回系统目前的日期与时间
DateDiff (interval,date1,date2) 以interval 指定的方式,返回date2 与date1两个日期之间的差值 date2-date1
DateAdd (interval,number,date) 以interval指定的方式,加上number之后的日期
DatePart (interval,date) 返回日期date中,interval指定部分所对应的整数值
DateName (interval,date) 返回日期date中,interval指定部分所对应的字符串名称
参数 interval的设定值如下:
值 缩 写(Sql Server) Access 和 ASP 说明
Year Yy yyyy 年 1753 ~ 9999
Quarter Qq q 季 1 ~ 4
Month Mm m 月1 ~ 12
Day of year Dy y 一年的日数,一年中的第几日 1-366
Day Dd d 日,1-31
Weekday Dw w 一周的日数,一周中的第几日 1-7
Week Wk ww 周,一年中的第几周 0 ~ 51
Hour Hh h 时0 ~ 23
Minute Mi n 分钟0 ~ 59
Second Ss s 秒 0 ~ 59
Millisecond Ms - 毫秒 0 ~ 999
access 和 asp 中用date()和now()取得系统日期时间;其中DateDiff,DateAdd,DatePart也同是能用于Access和asp中,这些函数的用法也类似
举例:
1.GetDate() 用于sql server :select GetDate()
2.DateDiff('s','2005-07-20','2005-7-25 22:56:32')返回值为 514592 秒
DateDiff('d','2005-07-20','2005-7-25 22:56:32')返回值为 5 天
3.DatePart('w','2005-7-25 22:56:32')返回值为 2 即星期一(周日为1,周六为7)
DatePart('d','2005-7-25 22:56:32')返回值为 25即25号
DatePart('y','2005-7-25 22:56:32')返回值为 206即这一年中第206天
DatePart('yyyy','2005-7-25 22:56:32')返回值为 2005即2005年

⑸ mssql 查询每周数据

你要展示是静态数据(每周周一生成上周的汇总数据)还是动态(根据时间实时查询得到的结果)的,如果你是统计自然周建议生成对应的静态数据,效率比较高,查询操作比较简单!

⑹ c#中如何拼接sql语句查询出一周所在的第一天和最后一天的信息

关键在于计皮雹瞎算出两个时间点,在燃空where条件中利用between and 限制日期字段
如果是从查询日往前算7天,肆仔还比较简单

⑺ 在OA系统中,查询输入的时间所对应的本周内的sql语句怎么写 时间字段为beginTime

如果是mssqlserver,使用日期函数DATEDIFF ( datepart , startdate , enddate ) 用法参考mssqlserver的使用帮助:DATEDIFF 返回跨两个指定日期的日期和时间边界数。 语法 DATEDIFF ( datepart , startdate , enddate ) 参数 datepart是规定了应在日期的哪一部分计算差额的参数。下表列出了 Microsoft�0�3 SQL Server�6�4 识别的日期部分和缩写。日期部分缩写yearyy, yyyyquarterqq, qMonthmm, mdayofyeardy, yDaydd, dWeekwk, wwHourhhminutemi, nsecondss, smillisecondms
startdate是计算的开始日期。startdate 是返回 datetime 或 smalldatetime 值或日期格式字符串的表达式。 因为 smalldatetime 只精确到分钟,所以当用 smalldatetime 值时,秒和毫秒总是 0。如果您只指定年份的最后两位数字,则小于或等于"两位数年份截止期"配置选项的值的最后两位数字的数字所在世纪与截止年所在世纪相同。大于该选项的值的最后两位数字的数字所在世纪为截止年所在世纪的前一个世纪。例如,如果 two digit year cutoff 为 2049(默认),则 49 被解释为 2049,2050 被解释为 1950。为避免模糊,请使用四位数的年份。有关时间值指定的更多信息,请参见时间格式。有关日期指定的更多信息,请参见 datetime 和 smalldatetime。 enddate是计算的终止日期。enddate 是返回 datetime 或 smalldatetime 值或日期格式字符串的表达式。返回类型 integer注释 startdate 是从 enddate 减去。如果 startdate 比 enddate 晚,返回负值。当结果超出整数值范围,DATEDIFF 产生错误。对于毫秒,最大数是 24 天 20 小时 31 分钟零 23.647 秒。对于秒,最大数是 68 年。计算跨分钟、秒和毫秒这些边界的方法,使得 DATEDIFF 给出的结果在全部数据类型中是一致的。结果是带正负号的整数值,其等于跨第一个和第二个日期间的 datepart 边界数。例如,在 1 月 4 日(星期日)和 1 月 11 日(星期日)之间的星期数是 1。示例 此示例确定在 pubs 数据库中标题发布日期和当前日期间的天数。USE pubs GO SELECT DATEDIFF(day, pubdate, getdate()) AS no_of_days FROM titles GO 你这的问题可以这样解决:select * from 表名 where datediff(ww,getdate(),beginTime)=0datediff(ww,getdate(),beginTime)=0,说明:datediff(ww,getdate(),beginTime),ww参数指定比较粒度是周,如果你的beginTime字段中时间值和系统时间(getdate())在同一周,则datediff(ww,getdate(),beginTime)返回0,如果beginTime是在本周之前,返回小于0的数值,如果beginTime是本周以后,则返回大于0的数值,所以你的过滤条件应该为datediff(ww,getdate(),beginTime)=0.还有一个问题是,日期是中星期日是周的开始,而不是周末.

⑻ 用SQL语句查找出所有联系人姓周或姓吴的客户信息

这个用到模糊查询。select * from table where like '周%' or like '吴%'

⑼ 关于sql 时间段查询的问题

1)
select * from kemu where man='小王' and shijian between dateadd(d,-(case
when datepart(dw,getdate())=1 then datepart(dw,getdate())+5
else datepart(dw,getdate())-2 end),getdate()) and getdate()

2)
select * from kemu where man='小王' and convert(varchar(20),shijian,120) like convert(varchar(7),shijian,120)+'%' and shijian<=getdate()

“ convert(varchar(20),shijian,120) like convert(varchar(7),shijian,120)'%' and shijian between getdate() and dateadd(d,7,getdate())”
这个结果是什么?假设今天是2008-08-12,shijian字段的值是2008-08-11,“convert(varchar(20),shijian,120) like convert(varchar(7),shijian,120)'%'”的结果是:“2008-08-11 13:40:20 like '2008-08%'”,实际上是8月整月的时间都满足这个条件,而后面的:“shijian between getdate() and dateadd(d,7,getdate())”,则是:“shijian between '2008-08-12' and '2008-08-19'”,而你要求的是要查“2008-08-11”至“2008-08-12”之间的数据。

⑽ sql 计算自然月周数按星期来计算,然后统计每周

没太理解你截图代码什么意思,我下面的例子可以通过输入年月得到该月份的总周数,使用的数据库是SQL SERVER 2005

DECLARE@yearint,@monthint,@tempdatadatetime,@sumdaymoney
SELECT@year=2015,@month=11
--先拼接成参数月份的第一天
SELECT@tempdata=convert(varchar(4),@year)+'-'+convert(varchar(2),@month)+'-01'
--统计参数月份总天数
SELECT@sumday=datediff(day,@tempdata,dateadd(month,1,@tempdata))
--计算参数月份一共几周
SEELCTceiling((@sumday-(casewhendatename(weekday,@tempdata)='星期一'then7.0
whendatename(weekday,@tempdata)='星期二'then6.0
whendatename(weekday,@tempdata)='星期三'then5.0
whendatename(weekday,@tempdata)='星期四'then4.0
whendatename(weekday,@tempdata)='星期五'then3.0
whendatename(weekday,@tempdata)='星期六'then2.0else1.0end))/7.0)+1