先转化为DateTime类型再直接减就行了
解决方案 »
- c#网站 VS上面正常浏览 IIS发布后也不可以(把VS打开就可以) 求解 不知道也帮顶下啊谢谢
- 如何将一个datetimepicker的值做为存储过程参数?
- C# int 和static int的区别是什么?
- 自动提交网页表单的问题
- 大家都来看看这个<<<纯WEB的在线视频>>>>是如何实现的???
- 急!!!请问在HyperLinkColumn里面做链接,主要是做这样的链接www.google.com,谢谢
- 如何判定其他进程对文件的写操作是否已经结束?
- 求教 关于GDI+图像方面的问题
- VS2013的帮助文档在哪里?我怎么看到的还是VS2012的?
- 小弟想请教一下,要做一个24小时运行的winform程序,网站后台用
- 如何使用system.web.mail{}发送邮件?
- 怎么没有system.web.mail命名空间
FROM [请假纪录]
WHERE yourdate >= startdate AND yourdate <= enddate
GROUP BY month(yourdate)
屁话加废话
month(结束日期)- month(开始日期)+1 //涉及的月份数
int iStart = 开始的月份
int iEnd = 结束的月份
for(int i=iStart;i<iEnd;i++)
{
if(i==iStart)
{
//获取开始日期的最后一天-开始日期 = 该月的请假天数。
}
else if (i==iEnd)
{
//获取开始日期的最后一天-结束日期 = 该月的请假天数。
}
else
{
根据其月份得到该月的天数
}
}
int iStart = 开始的月份
int iEnd = 结束的月份
for(int i=iStart;i<iEnd;i++)
{
if(i==iStart)
{
//获取开始日期的最后一天-开始日期 = 该月的请假天数。
}
else if (i==iEnd)
{
//获取结束日期的最后一天-结束日期 = 该月的请假天数。
}
else
{
根据其月份得到该月的天数
}
}
如果只取6月份的请假天,数怎样从数据库中计算出来!谢谢!
CREATE PROCEDURE dbo.my_MonthDays
@sDate datetime,
@eDate datetime
as
create table #report1(indate datetime)
set nocount on
declare @mNum int
declare @n int
select @mNum =datediff(day,@sdate,@edate)
select @n=0
while not @n>@mNum
begin
insert into #report1 values(dateadd(day,@n,@sdate))
select @n=@n+1
end
exec ('select convert(varchar(7),indate,120),count(indate) from #report1 group by convert(varchar(7),indate,120)')
GO
返回指定年份中指定月份的天数。
I'm sorry!
sorry ,jiezhi
存儲過程有什么好处呢?
我只喜欢用view
給你參考一下
stDate,enDate 的格式為“2004-06-02”;stTime,enTime的格式為“08:00”
function SumLeaveHour(stDate,enDate,stTime,enTime)//計算請假工時
{
var st,en,hours = 0;
var tmp = stDate.split("-");
var tmp2 = stTime.replace(":",",");
//注意月份,需設置為 0 - 11 的整數
eval("st =new Date("+tmp[0]+","+(tmp[1]-1)+","+tmp[2]+","+tmp2+");");
tmp = enDate.split("-");
tmp2 = enTime.replace(":",",");
eval("en =new Date("+tmp[0]+","+(tmp[1]-1)+","+tmp[2]+","+tmp2+");");
tmp = 1000*60*60*24; //一天的毫秒數
var days = Math.round((en.getTime() - st.getTime())/tmp);
tmp=1000*60*60;//一個小時的毫秒數
if(days>0) //不在同一天
{
var st2 = new Date(st.getFullYear(),st.getMonth(),st.getDate(),17,30);
var en2 = new Date(en.getFullYear(),en.getMonth(),en.getDate(),08,00);
if(st.getDay()!=0 && st.getDay()!=6) //避開雙休日
{
hours = (st2.getTime() - st.getTime())/tmp; //第一天的請假工時
if(st.getHours()<13)
{
hours -= 1.5;
}
}
if(en.getDay()!=0 && en.getDay()!=6)
{
hours += (en.getTime() - en2.getTime())/tmp ;//最後一天的請假工時
if(en.getHours()>13)
{
hours -= 1.5;
}
}
tmp2 = 0;
for(var i =1;i<days;i++)
{
st2.setTime(st.getTime()+tmp*24*i);
if(st2.getDay()!=0 && st2.getDay()!=6)
{
tmp2 ++; //從第一天到最後一天之間有多少個工作日
}
}
hours += tmp2*8;
}
else if(days == 0) //在同一天
{
hours = (en.getTime()/tmp)-(st.getTime()/tmp);
if(st.getHours()<13 && en.getHours()>13)
{
hours -= 1.5; //除掉中午休息時間
}
}
if(hours<0){hours=0;}
return hours;
}
:)