『壹』 每個月的工作日有多少天,每個月剩餘多少天(去除工作日,法定節假日)的sql語句。
select year(日期),month(日期),is_working_day,count(*) from table group by is_working_day order by year(日期),month(日期);
mysql的寫法,如果sqlserver,
year(日期),month(日期) 換成
DateName(year,日期),DateName(month,日期)
『貳』 sql 計算一個月幾天
使用 datediff 來獲取兩個時間差:
如語句:
select datediff(day,"2015-2-1","2015-3-1")
返回2105年2月份共 28 天
DATEDIFF 函數 [日期和時間]
功能 返回兩個日期之間的間隔。
語法 DATEDIFF ( date-part, date-expression-1, date-expression-2 )
date-part : year | quarter | month | week | day | hour | minute | second | millisecond
參數 date-part 指定要測量其間隔的日期部分。
有關日期部分的詳細信息,請參見日期部分。
date-expression-1 某一間隔的起始日期。從 date-expression-2 中減去該值,返回兩個參數之間 date-parts 的天數。
date-expression-2 某一間隔的結束日期。從該值中減去 Date-expression-1,返回兩個參數之間 date-parts 的天數。
用法 此函數計算兩個指定日期之間日期部分的數目。結果為日期部分中等於(date2 - date1)的有符號的整數值。
當結果不是日期部分的偶數倍時,DATEDIFF 將被截斷而不是被舍入。
當使用 day 作為日期部分時,DATEDIFF 返回兩個指定的時間之間(包括第二個日期但不包括第一個日期)的午夜數。
當使用 month 作為日期部分時,DATEDIFF 返回兩個日期之間(包括第二個日期但不包括第一個日期)出現的月的第一天的數目。
當使用 week 作為日期部分時,DATEDIFF 返回兩個日期(包括第二個日期但不包括第一個日期)之間星期日的數目。
對於更小的時間單位存在溢出值:
milliseconds 24 天
seconds 68 年
minutes 4083 年
others 沒有溢出限制
如果超出這些限制,此函數將返回溢出錯誤。
標准和兼容性 SQL/92 Transact-SQL 擴展。
SQL/99 Transact-SQL 擴展。
Sybase 與 Adaptive Server Enterprise 兼容。
下面示例的語句返回 1: SELECT datediff( hour, '4:00AM', '5:50AM' )
下面的語句返回 102: SELECT datediff( month, '1987/05/02', '1995/11/15' )
下面的語句返回 0: SELECT datediff( day, '00:00', '23:59' )
下面的語句返回 4: SELECT datediff( day,'1999/07/19 00:00','1999/07/23 23:59' )
下面的語句返回 0: SELECT datediff( month, '1999/07/19', '1999/07/23' )
下面的語句返回 1: SELECT datediff( month, '1999/07/19', '1999/08/23' )
『叄』 sql server 怎麼獲取指定月的天數
一、新建SQL查詢測試
登錄SQL Server2008,新建一個查詢窗口,輸入:select 1,執行,若輸出1,則資料庫檢測正常。如圖:
二、SQL獲取當前日期
在查詢窗口中輸入:Select getdate()並選中,單擊執行或按F5,檢測當地時間是否准確。如圖:
注意:選中單條執行操作是卻別與其他查詢。
三、SQL獲取當前月份的天數
從步驟二中,檢測到時間正確,當前為11月,那當前月的天數應該是30天;
輸入:SELECT 32-DAY(getdate()+32-DAY(getdate())) ,選中並執行,查看輸出結果。如圖:
四、SQL獲取當前月的最後一天
這種方法可以准確的看到當前月份是11月,最後一天是11月30日;
輸入:select datediff(mm,0,getdate()),選中,執行,查看輸出結果,如圖:
五、獲取當前月第一天日期
輸入查詢語句:select dateadd(mm,datediff(mm,0,getdate()),0),選中,執行,查看輸出結果。如圖:
六、獲取下月第一天的日期
輸入SQL查詢:select dateadd(mm,datediff(mm,0,getdate())+1,0),選中,執行,查看輸出結果。如圖:
七、獲取本月最後一天的日
輸入SQL查詢:select day(dateadd(mm,datediff(mm,0,getdate())+1,0)-1),選中,執行,查看結果。如圖:
八、獲取指定年份指定月份的天數
輸入SQL查詢語句:
declare @年月 varchar(6) set @年月= '201502' --查詢2015年2月有多少天 select day(dateadd(month,1,@年月+ '01 ')-1)
選中,執行,查看結果是不是為28?如圖:
『肆』 sql統計一個月一共出勤多少天
出勤天數
select * from 考勤表 where (intkqstate<7 and outkqstate<7) and 日期 between '2009-1-1' and '2009-1-31' and 員工ID=" & ID
如果不查某個人的,就不用加員工ID這個條件
未出勤天數:
select * from 考勤表 where (intkqstate>6 and outkqstate>6) and 日期 between '2009-1-1' and '2009-1-31' and 員工ID=" & ID
『伍』 SQL資料庫語言 求某個日期所在月份有多少天
DECLARE @DATE DATETIME
SET @DATE='2007-02-02'
SELECT DATEDIFF(DAY,@DATE,DATEADD(MONTH,1,@DATE))
原理:本月的今天到下月的今天就是本月的天數,比樓上的都簡單,:),LZ自己可以試試
『陸』 sqlserver用sql語句怎麼返回一個月所有的天數。
可用如下sql語句:
selectconvert(varchar(10),dateadd(DAY,t2.number,t1.day),120)dayfrom
(select'2015-07'+'-01'day)t1,
(selectnumberfromMASTER..spt_valuesWHERETYPE='P'ANDnumber>=0andnumber<=31)t2
whereconvert(varchar(10),dateadd(DAY,t2.number,t1.day),120)like'2015-07%'
說明:要查詢某年某月,只許將語句中的2015-07替換即可。
結果截圖:
『柒』 sql 怎麼求出 一個月 有幾天
具體方法如下:
--1.刪除測試用表
IF OBJECT_ID(N'Test', N'U') IS NOT NULL
DROP TABLE Test
--2.建立測試表,並填充測試數據
SELECT * INTO Test
FROM
(
SELECT CONVERT(DATETIME, '2008-1-1', 120) AS dt UNION ALL SELECT '2008-1-15' UNION ALL SELECT '2008-1-31'
UNION ALL SELECT '2008-2-1' UNION ALL SELECT '2008-2-15' UNION ALL SELECT '2008-2-29'
UNION ALL SELECT '2007-2-1' UNION ALL SELECT '2007-2-15' UNION ALL SELECT '2007-2-28'
UNION ALL SELECT '2007-4-1' UNION ALL SELECT '2007-4-15' UNION ALL SELECT '2007-4-30'
) T
--3.根據日期計算當月有多少天
SELECT *
--當月天數=32-[(上月最後最後一天+32天)的日期值]
--e.g. '2008-1':32-day('2008-2-1') '2008-2':32-day('2008-3-3')
, ds1=32-DAY(dt-DAY(dt)+32)
--當月天數=當月最後一天的日期值
--e.g. '2008-1':day('2008-1-31') '2008-2':day('2008-2-29')
, ds2=DAY(DATEADD(mm,1,dt)-DAY(DATEADD(mm,1,dt)))
, ds3=DAY(DATEADD(mm, MONTH(dt), dt-DATEPART(dy,dt)))
, ds4=DAY(DATEADD(d, -1, CONVERT(VARCHAR(8), DATEADD(m,1,dt), 120)+'01'))
--當月天數=本月一號到下月一號的天數差值
--e.g. datediff(d, '2008-1-1', '2008-2-1')
, ds5=DATEDIFF(d, DATEADD(dd,1-DAY(dt),dt), DATEADD(mm, 1, DATEADD(dd,1-DAY(dt),dt)))
, ds6=DATEDIFF(d, DATEADD(m, DATEDIFF(m, 0, dt), 0), DATEADD(m, datediff(m, 0, dt)+1, 0))
, ds7=DATEDIFF(d, CONVERT(VARCHAR(8), dt, 120)+'01', CONVERT(VARCHAR(8), DATEADD(m,1,dt), 120)+'01')
from Test
『捌』 sql 查詢一個月里的數據
SQL中查詢一個月里的數據,舉例及解決方法如下:
1、假如要查詢表t1欄位mydate為2015-10-1至2015-10-31之間的所有數據。
2、可以使用以下查詢語句:
SELECT*FROMt1WHEREmydateBETWEEN'2015-10-01'and'2015-10-31';
『玖』 sql server如何計算一個月最多有多少天
具體方法如下:
--1.刪除測試用表
IF OBJECT_ID(N'Test', N'U') IS NOT NULL
DROP TABLE Test
--2.建立測試表,並填充測試數據
SELECT * INTO Test
FROM
(
SELECT CONVERT(DATETIME, '2008-1-1', 120) AS dt UNION ALL SELECT '2008-1-15' UNION ALL SELECT '2008-1-31'
UNION ALL SELECT '2008-2-1' UNION ALL SELECT '2008-2-15' UNION ALL SELECT '2008-2-29'
UNION ALL SELECT '2007-2-1' UNION ALL SELECT '2007-2-15' UNION ALL SELECT '2007-2-28'
UNION ALL SELECT '2007-4-1' UNION ALL SELECT '2007-4-15' UNION ALL SELECT '2007-4-30'
) T
--3.根據日期計算當月有多少天
SELECT *
--當月天數=32-[(上月最後最後一天+32天)的日期值]
--e.g. '2008-1':32-day('2008-2-1') '2008-2':32-day('2008-3-3')
, ds1=32-DAY(dt-DAY(dt)+32)
--當月天數=當月最後一天的日期值
--e.g. '2008-1':day('2008-1-31') '2008-2':day('2008-2-29')
, ds2=DAY(DATEADD(mm,1,dt)-DAY(DATEADD(mm,1,dt)))
, ds3=DAY(DATEADD(mm, MONTH(dt), dt-DATEPART(dy,dt)))
, ds4=DAY(DATEADD(d, -1, CONVERT(VARCHAR(8), DATEADD(m,1,dt), 120)+'01'))
--當月天數=本月一號到下月一號的天數差值
--e.g. datediff(d, '2008-1-1', '2008-2-1')
, ds5=DATEDIFF(d, DATEADD(dd,1-DAY(dt),dt), DATEADD(mm, 1, DATEADD(dd,1-DAY(dt),dt)))
, ds6=DATEDIFF(d, DATEADD(m, DATEDIFF(m, 0, dt), 0), DATEADD(m, datediff(m, 0, dt)+1, 0))
, ds7=DATEDIFF(d, CONVERT(VARCHAR(8), dt, 120)+'01', CONVERT(VARCHAR(8), DATEADD(m,1,dt), 120)+'01')
from Test
『拾』 時間函數 本月有多少天 sql
剛才的答案不對,感謝skyfukk的提示。
下面這個應該是對的。找到該月的最後一天,取其天數:
selectdatepart(day,dateadd(month,datediff(month,'1999-12-31',getdate()),'1999-12-31'));