我想从一个月的第1天到第30/31/28期搜索一个循环检查datepart(dw,) [英] I want a loop that searches from day 1 to 30/31/28 of a month checks datepart(dw,)
本文介绍了我想从一个月的第1天到第30/31/28期搜索一个循环检查datepart(dw,)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想要一个循环,搜索从第1天到第30/31/28个月的日期是当月的第一天dw为星期日返回1,所以如果dw是星期日,那么算它是逻辑;
我面临2个prbs
1)dw这里在Vstudio中返回4个星期日(可能是Int 32是prb我猜)但是在Sqlserver中Datepart返回一个同一天。
2)日期添加设置日期到第2个月的第2个bt之后它失败
I want a loop that searches from day 1 to 30/31/28 of a month date is the first day of current month dw returns 1 for sunday so if dw is a sunday then count it that's the logic;
I am facing 2 prbs
1)dw here returns 4 for sunday in Vstudio (may be Int 32 is a prb i guess) however in Sqlserver Datepart returns one for the same date.
2) Date add sets date to 2nd of month in 2nd ittration bt after that it fails
int firstday =Convert.ToInt32( Helper.ExeCuteReader("SELECT Day( CONVERT(VARCHAR(25),DATEADD(dd,-(DAY(getdate())-1),getdate()),101))"));// first day of month
// till the day in which you r giving salary
//int lastday =Convert.ToInt32( Helper.ExeCuteReader("SELECT Day( CONVERT(VARCHAR(25),DATEADD(dd,-(DAY(DATEADD(mm,1,getdate()))),DATEADD(mm,1,getdate())),101) )"));//last day
int today = Convert.ToInt32(Helper.ExeCuteReader("Select Day(getdate())"));
int totaldays = Convert.ToInt32(Helper.ExeCuteReader("SELECT DateDiff(dd,CONVERT(VARCHAR(25),DATEADD(dd,-(DAY(getdate())-1),getdate()),101),getdate())"));
DateTime date = Convert.ToDateTime(Helper.ExeCuteReader("SELECT CONVERT(VARCHAR(25),DATEADD(dd,-(DAY(getdate())-1),getdate()),101) "));
// day1--datetime value
int dw = 0,sunday=0;
for (int i = firstday; i <= today; i++)
{
string a = Helper.ExeCuteReader("select datepart(dw, '" + date + "')");
dw = Convert.ToInt32(a);
// day1--datetime value
string c = Helper.ExeCuteReader("select DATEADD(day,1,'" + date + "')");
date = Convert.ToDateTime(c);
if (dw == 1)//it should be one bt int32 is conerting it to four
{
sunday++;
}
推荐答案
我的第二个Matt T Heffron。在代码而不是数据库中执行。
由于我不太了解您的要求,这里有一个使用日期时间 [ ^ ]以我的心血来潮编码:
I second Matt T Heffron. Do it in code instead of database.
Since I didn't understand your requirement very well, here's an example of working with DateTime[^] coded at my whim:
void ShowExample()
{
DateTime salaryDay = DateTime.Now;
DateTime monthStart = new DateTime(salaryDay.Year, salaryDay.Month, 1);
int daysInMonth = DateTime.DaysInMonth(salaryDay.Year, salaryDay.Month);
DateTime monthEnd = new DateTime(salaryDay.Year, salaryDay.Month, daysInMonth);
int sundays = 0;
for (DateTime dt = monthStart; dt < monthEnd; dt += TimeSpan.FromDays(1))
{
if (dt.DayOfWeek == DayOfWeek.Sunday)
{
sundays++;
}
}
}
这篇关于我想从一个月的第1天到第30/31/28期搜索一个循环检查datepart(dw,)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文