❶ sqlserver 寫一個函數,能獲取兩個日期之間的周一到周五的總天數
drop function dbo.f_get_workdays
go
CREATE FUNCTION dbo.f_get_workdays(@bdate DATETIME, @edate DATETIME)
RETURNS INTEGER
AS BEGIN
DECLARE @workdays INTEGER
IF @bdate > @edate
RETURN -1
SELECT @workdays =
--如果終止日期與起始日期在同一個星期內,只需要計算有幾天即可
CASE WHEN DATEPART(wk, @edate-1)-DATEPART(wk,@bdate) = 0 THEN
CASE WHEN DATEPART(dw, @bdate) > 5 THEN 0
WHEN DATEPART(dw, @edate-1) > 5 THEN 6 - DATEPART(dw, @bdate)
ELSE DATEPART(dw, @edate-1) - DATEPART(dw, @bdate) + 1 END
--如果終止日期與起始日期在不同的星期內
--首先計算出除前後兩個星期外完整的星期數 * 5
ELSE (DATEDIFF(dd,@bdate,@edate)
- (8-DATEPART(dw, @bdate))
- DATEPART(dw, @edate-1)) / 7 * 5
--再加上第一個星期里的工作日數
+ CASE WHEN DATEPART(dw, @bdate) < 6 THEN 6 - DATEPART(dw, @bdate)
ELSE 0 END
--加上末一個星期里的工作日數
+ CASE WHEN DATEPART(dw, @edate-1)>5 THEN 5 ELSE DATEPART(dw, @edate-1) END
END
RETURN @workdays
END
go
select dbo.f_get_workdays(dateadd(day,-21,getdate()),getdate())
❷ sqlserver怎麼按周來統計數據
指定一個起始日,計算到該日的天數,/7 得到經過的周數。然後按這個周數分組。
❸ 在sql中怎樣獲得已知日期是星期幾
Oracle資料庫:
第一個:SELECT DECODE(dw,
0,
'星期天',
1,
'星期一',
2,
'星期二',
3,
'星期三',
4,
'星期四',
5,
'星期五',
6,
'星期六') WEEK_DAY
FROM (SELECT 7 -
TO_NUMBER(NEXT_DAY(TO_DATE('2012-12-12', 'yyyy-mm-dd'), 1) -
TO_DATE('2012-12-12', 'yyyy-mm-dd')) dw
FROM al);
第二個語句:
SELECT TO_CHAR(TO_DATE('2012-12-12', 'YYYY-MM-DD'), 'DAY') WEEK_DAY
FROM DUAL
SqlServer資料庫:
select case datepart(weekday, getdate())
when 1 then
'星期天'
when 2 then
'星期一'
when 3 then
'星期二'
when 4 then
'星期三'
when 5 then
'星期四'
when 6 then
'星期五'
when 7 then
'星期六'
end
(3)sqlserver星期擴展閱讀:
SQL相關函數:
SQL Aggregate 函數:SQL Aggregate 函數計算從列中取得的值,返回一個單一的值。
有用的 Aggregate 函數:AVG() - 返回平均值,COUNT() - 返回行數,FIRST() - 返回第一個記錄的值,LAST() - 返回最後一個記錄的值,MAX() - 返回最大值,MIN() - 返回最小值,SUM() - 返回總和
SQL Scalar 函數:SQL Scalar 函數基於輸入值,返回一個單一的值。
有用的 Scalar 函數:UCASE() - 將某個欄位轉換為大寫,LCASE() - 將某個欄位轉換為小寫,MID() - 從某個文本欄位提取字元;
LEN() - 返回某個文本欄位的長度,ROUND() - 對某個數值欄位進行指定小數位數的四捨五入,NOW() - 返回當前的系統日期和時間,FORMAT() - 格式化某個欄位的顯示方式。
參考資料:網路——sql
❹ sqlserver如何算出星期
2.每年每個月的信息
sql = select datepart(year,date)*100+datepart(month,date) YEARMONTH,* SPSL,distinct(employee) from user
group by uname
1.每月每個星期的信息
sql = select * from user where date between DateAdd(day,day(getdate())-1,getdate()) and DateAdd(day,7-day(getdate()),getdate())
❺ sqlserver怎麼判斷每個月的第二個星期五
您可以使用SQL Server中的DATEPART函數來判斷每個月的第二個星期五。該函數允許您提取日期中的特定部分,如年、月、日、星期幾等。
例如,假設您想要查詢每個月的第二個星期五,您可以使用以下SQL查詢:
SELECT DATEADD(dd, 14 - DATEPART(dw, '2022-12-01') + 2, '2022-12-01') AS SecondFridayFROM myTable
在這里,我們使用DATEADD函數來計算第二個星期五的日期。該函數接受三個參數:日期部分(在這里為dd,表示日)、日期偏移量(在這里為14減去第一天所屬星期的第幾天,再加上2,表示第二個星期五)、和起始日期(在這里為'2022-12-01',表示12月份的第一天)。
請注意,這個查詢只能用於查詢每個月的第二個星期五,如果您想要查詢更多的日期,則需要進行一些更改。例如,您可以將查詢放在循環中,並逐個檢查每個月的第二個星期五,或者您可以使用更復雜的SQL語句來實現這個目標。具體取決於您想要實現的具體功能。
❻ sqlserver中如何將第幾周轉為具體的日期
CREATE function Week2Day(@intYear integer,@intWeek integer) returns varchar(50) as begin declare @dateFirstDayOfYear datetime declare @dateFirstDayOfWeek datetime declare @dateLastDayOfWeek datetime set @dateFirstDayOfYear=convert(smalldatetime,convert(varchar(4),@intYear) + '-1-1') set @dateFirstDayOfWeek=dateadd(day,1-datePart(weekday,@dateFirstDayOfYear),dateAdd(week,@intWeek-1,@dateFirstDayOfYear)) set @dateLastDayOfWeek=dateadd(day,6,@dateFirstDayOfWeek) RETURN convert(varchar(10),@dateFirstDayOfWeek,11) + '~' + convert(varchar(10),@dateLastDayOfWeek,11) end
❼ sqlserver如何查詢當月的第一個星期五
說一下我的思路吧.首先查詢出當前月的每一天進行排序,然後再對每一天進行星期幾的查詢,再定位第一個星期五,我們用的也是Oracle,語句應該也是大同小異.
select ndate(select trunc(sysdate,'mm')+level-1 as ndate from daul connect by level <=31) t where to_char(ndate,'dy')='星期五' and rownum='1';
❽ SQL SERVER查詢時間是一年中第幾周的函數
1、獲取當前系統資料庫的日期和時間,可以利用函數GETDATE(),select GETDATE()。