sql天數
① sql按天數統計
這個應該再多一個表,邏輯清晰些.
上邊的這個表用於統計每天的打卡起止時間
下邊的這個表用於統計每天的小時數,和每天的工資數.
id 編號 姓名 日期 開始時間 結束時間 小時工資
1 1001 黑子 2008-05-21 11:00 12:00 20
程序在每天的最後一小時取表中屬於今天的記錄,用日期欄位來判斷第一次和最後一次(最早的時間記錄和最後的時間記錄),獲得小時數.然後用獲得的小時數*小時工資.插入到第二個表裡.
id 編號 姓名 日期 工作小時 總工資
1 1001 黑子 2008-05-21 1 20
除此之外,建議再多一個用戶表.
② sql中計算周六,周日天數
先建立函數,再執行下面的語句
CREATE FUNCTION getday --
(@datestart datetime,--啟始日期
@dateend datetime, --結束日期
@DW VARCHAR(6)) --星期幾
RETURNS INT
AS
BEGIN
DECLARE @DAYCOUNT int
SET @DAYCOUNT=0
while @datestart<=@dateend
begin
if datename(dw,@datestart)=@DW
set @DAYCOUNT=@DAYCOUNT+1
SET @DATESTART=DATEADD(DAY,1,@DATESTART)
end
RETURN(@DAYCOUNT)
END
GO
SELECT DBO.GETDAY('2008-01-01','2008-12-31','星期六') AS SATDAY,
DBO.GETDAY('2008-01-01','2008-12-31','星期日') AS SUNDAY
③ sql語句中可以查詢兩個日期之間的天數么
select datediff('2009-1-1', '2008-1-1');
用datediff函數,第一個參數是截止時間,第二個參數是起始時間
不好意思,剛才的是mysql,剛看了下sql的文檔發現有點區別- -,sql的話,用下面的形式:
DATEDIFF ( datepart , startdate , enddate )
所以你要求2個日期之間間隔的天數,這樣寫:
datediff( dd, '2008/1/1', '2009/1/2' )
這里的dd表示計算天數差
④ SQL統計天數
SQL統計天數
Create Table T
(
id int,
date datetime,
num int
)
insert into T values(1,'2015-5-2',1)
insert into T values(1,'2015-6-4',2)
insert into T values(1,'2015-6-4',3)
insert into T values(2,'2015-5-2',1)
insert into T values(2,'2015-5-2',2)
insert into T values(2,'2015-10-4',3)
--按id分組,在日期范圍內統計不重復的date
Select id,COUNT(Distinct [Date]) As Cnt
From T
Where [DATE] between '2015-05-01' and '2015-10-01'
Group by id
⑤ SQL是計算兩個日期相差多少天數的函數
定義:datediff(day/month/year,startdate,enddate)
日期函數:(要返回的天數/月數/年數,開始日期,結束日期)
具體形式:
select 1,2,datediff(day,1,2) 天數 from aa
⑥ sql 時間 加指定天數
1、登錄SQL Server2008,新建一個查詢窗口,輸入:select 1,執行,若輸出1,則資料庫檢測正常。
7、輸入SQL查詢:select day(dateadd(mm,datediff(mm,0,getdate())+1,0)-1),選中,執行,查看結果。
⑦ SQL中怎麼計算兩日期之間的天數
DECLARE @Date datetime
set @Date = '2010-01-01'
SELECT DATEDIFF(d,@Date,getdate())
DATEDIFF直接算天數 但你還要按小時來算 估計得自己寫自己定義函數了
⑧ sql 怎麼查詢當前月份的所有天數
select * from 表名 where datepart(dd,時間欄位)=要查詢日期的天數 and
datepart(mm,時間欄位)=要查詢的月份
例如有個表t_cp 時間欄位stime
select * from t_cp where datepart(dd,stime)=5 and datepart(mm,stime)=8
查詢這個表中,8月5號的數據
⑨ sql中該如何算成倆個時間之間的天數
ORACLE的寫法:
select trunc(date1-date2) 天數 from al;
⑩ 利用SQL語句如何獲得兩個日期之間相差的天數
用sysdate假設結束日期欄位是end_date
添加這個判斷條件:
where to_char("end_date",'YYYY') = to_char(sysdate,'YYYY') 判斷年相同
and to_char("end_date",'MM') = to_char(sysdate,'MM') 判斷月相同
and to_char("end_date",'dd') - to_char(sysdate,'dd') = 15 判斷日相同
或者:
where to_char("end_date",'YYYY-MM-DD') - to_char(sysdate,'YYYY-MM-DD')=15
(10)sql天數擴展閱讀:
注意事項
DATEDIFF返回跨兩個指定日期的日期和時間邊界數。
語法:DATEDIFF ( datepart , startdate , enddate )
參數:datepart
是規定了應在日期的哪一部分計算差額的參數。下表列出了 Microsoft® SQL Server™ 識別的日期部分和縮寫。
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 年。