當前位置:首頁 » 編程語言 » 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