------------------------------------------------------------------------ 沒有你想的那麼複雜吧。假設今天是星期四,傳入今天的日期,就把數據庫中所有是星期四的數據全部查詢出來,這是你的要求吧。Select * from TableName Where DatePart(dw,日期字段)=DatePart(dw,GetDate())
要先设置哪一天是每星期的第一天,sql server默认是星期天(7) set datefirst 1 Select * from TableName Where DatePart(dw,日期字段)=6
-------------------------------------------------------------------------- Select * from TableName Where DatePart(dw,日期字段)=DatePart(dw,GetDate()) 這就是說獲得所有為星期四的數據取出來了。這裡也是可以改的啊,隨便你查詢哪天的。Select * from TableName Where DatePart(dw,日期字段)=DatePart(dw,'2006-4-22')這就是查詢所有是星期六的數據。
--建立測試環境 Create Table TEST (ID Int, InsertDate DateTime) --插入數據 Insert TEST Select 1,'2006-03-12' Union All Select 2,'2006-03-12' Union All Select 3,'2006-03-11' Union All Select 4,'2006-03-17' Union All Select 5,'2006-03-19' Union All Select 6,'2006-03-23' Union All Select 7,'2006-03-16' --測試 --查詢所有的日期為星期四的數據,傳入的數據是今天的日期 Select * from TEST Where DatePart(dw,InsertDate)=DatePart(dw,GetDate()) --查詢所有的日期為星期六的數據,傳入的數據是'2006-04-22' Select * from TEST Where DatePart(dw,InsertDate)=DatePart(dw,'2006-04-22') --刪除測試環境 Drop Table TEST --結果 /* ID InsertDate 1 2006-03-23 00:00:00.000 1 2006-03-16 00:00:00.000ID InsertDate 1 2006-03-11 00:00:00.000 */
set @dddd = cast('2006-04-20' as datetime)
select * from yourtable where datefiled = datename(weekday,@dddd)
select * from yourtable where = datename(weekday,YourDateFiled) = '星期六'
7對應的才是星期六。Select * from TableName Where DatePart(dw,日期字段)=7
还有其他的值也是星期六这一天同样给列出来。不过这样考虑的话那就要在存储过程里进行逻辑处理了。
对,要查出"xxxx-xx-xx",比如说"2006-4-22"这天是星期六,那就把2006-4-22这一列值给取出来
还有其他的值也是星期六这一天同样给列出来。不过这样考虑的话那就要在存储过程里进行逻辑处理了。
------------------------------------------------------------------------
沒有你想的那麼複雜吧。假設今天是星期四,傳入今天的日期,就把數據庫中所有是星期四的數據全部查詢出來,這是你的要求吧。Select * from TableName Where DatePart(dw,日期字段)=DatePart(dw,GetDate())
set datefirst 1
Select * from TableName Where DatePart(dw,日期字段)=6
那照你这么说,上个星期四的值你不要了吗?
--------------------------------------------------------------------------
Select * from TableName Where DatePart(dw,日期字段)=DatePart(dw,GetDate())
這就是說獲得所有為星期四的數據取出來了。這裡也是可以改的啊,隨便你查詢哪天的。Select * from TableName Where DatePart(dw,日期字段)=DatePart(dw,'2006-4-22')這就是查詢所有是星期六的數據。
你传进去的参数是星期一~到星期天
-----------------------------------------------------------------大哥,我什麼時候傳進星期一~星期天了。我傳的就是日期啊。今天的日期,'2006-4-22',等等。
按上面的说法要求就是固定的传进去参数是星期一~到星期天
pubs数据库的employee表做实验
select hire_date from employee where datename(weekday,hire_date) = '星期六'
成功
如果是中文,则为'星期六',如果是英文,则为'Saturday'。最好用datepart(wd,getdate())
1~7分别代表星期日-星期六
Create Table TEST
(ID Int,
InsertDate DateTime)
--插入數據
Insert TEST Select 1,'2006-03-12'
Union All Select 2,'2006-03-12'
Union All Select 3,'2006-03-11'
Union All Select 4,'2006-03-17'
Union All Select 5,'2006-03-19'
Union All Select 6,'2006-03-23'
Union All Select 7,'2006-03-16'
--測試
--查詢所有的日期為星期四的數據,傳入的數據是今天的日期
Select * from TEST Where DatePart(dw,InsertDate)=DatePart(dw,GetDate())
--查詢所有的日期為星期六的數據,傳入的數據是'2006-04-22'
Select * from TEST Where DatePart(dw,InsertDate)=DatePart(dw,'2006-04-22')
--刪除測試環境
Drop Table TEST
--結果
/*
ID InsertDate
1 2006-03-23 00:00:00.000
1 2006-03-16 00:00:00.000ID InsertDate
1 2006-03-11 00:00:00.000
*/
用这个datepart(wd,getdate())1~7分别代表星期日-星期六
比较合理一些
谢谢,你使我进步了!!!
用datepart(wd,getdate())1~7来查
有比较才有鉴别
有切磋才有进步
也谢谢你paoluo(一天到晚游泳的鱼)
向你学习