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 年。