您的位置:首页 > 其它

获取当前月的第一天和最后一天

2010-06-02 14:30 288 查看
呵呵,这个还是经常要用到的,记载下下。查找到的和现用的记录下:

C#

int year = DateTime.Now.Year;
int month = DateTime.Now.Month;

DateTime firstDayOfThisMonth = new DateTime(year, month, 1);

DateTime lastDayOfThisMonth = new DateTime(year, month, DateTime.DaysInMonth(year, month));

若是字符串形式的第一天还可以用这种形式:

string FirstDate =DateTime.Now.ToString("yyyy-MM-01");

下面的这个SQL的还没有测试的呢!

SQL

DECLARE @NOW DATETIME
DECLARE @FistDayOfThisMonth DATETIME
DECLARE @LastDayOfThisMonth DATETIME

SET @NOW = GETDATE()
SET @FistDayOfThisMonth = @NOW - DAY(@NOW) + 1
SET @LastDayOfThisMonth = DATEADD(MONTH, 1, @NOW - DAY(@NOW) + 1) - 1

SELECT @FistDayOfThisMonth
SELECT @LastDayOfThisMonth

形式语法结果注释
数字{0:N2}12.36
数字{0:N0}13
货币{0:c2}$12.36
货币{0:c4}$12.3656
货币"¥{0:N2}"¥12.36
科学计数法{0:E3}1.23E+001
百分数{0:P}12.25%P and p present the same.
日期{0:D}2006年11月25日
日期{0:d}2006-11-25
日期{0:f}2006年11月25日 10:30
日期{0:F}2006年11月25日 10:30:00
日期{0:s}2006-11-26 10:30:00
时间{0:T}10:30:00
在设置GridView数据绑定控件的模版列时,总要设置显示的格式,这里是我查询一些资料后统计出来的。

这个存储过程的作用是自动生成编号,比如我们在数据库中有个**票编号字段,该存储过程可以生成格式为头(自己定义的一个头,比如AA)+日期(形如20070401)+6位递增整数(形如002254),并且每到了新的一年后面的6位整数便会归0重新开始。其中用到了动态执行sql的方法。参数有四个,需要给出表名称,字段名称,头和一个返回值。


=============================================


-- Author: <vagerent>


-- Create date: <2006-12-14>


-- Description: <获取编码,形如HEAD20060512000001;(头+日期+6位整数)后面为六位,每新的一年编号重新




归0>


-- =============================================


Create PROCEDURE [dbo].[mp_GetPKNo]


@sTableName varchar(50),


@sFieldName varchar(50),--目标字段


@sHead varchar(50),--前缀,如Head等


@sPK varchar(50) out --输出




AS


BEGIN


declare @dToday datetime,@sToday varchar(10),


@sYear varchar(10),@sSubID varchar(20),@sSql nvarchar(1000);--动态sql一定要用




nvarchar!!!




set @dToday = getdate();


set @sToday = Convert(varchar,Year(@dToday))


+SubString(Convert(varchar,Month(@dToday)+100),2,2)


+SubString(Convert(varchar,Day(@dToday)+100),2,2);


--select @sToday--形如20060512


set @sYear=Convert(varchar(10),Year(getdate()))


--select @sYear--形如2006




declare @sHead1 varchar(30),@iHeadLength int;


set @sHead1=@sHead+@sYear;--形如HEAD2006


--select @sHead1;--形如HEAD2006


set @iHeadLength=Len(@sHead1);


--select @iHeadLength;--形如6


set @sSql = N'select @sSubID=Max(SubString('


+@sFieldName+','+Convert(varchar(10),@iHeadLength+5)+',6)) from '


+@sTableName+' where SubString('+@sFieldName+',1,'


+Convert(varchar(10),@iHeadLength)+')='''+@sHead1+'''';


--select @sSql;--形如select

..


exec sp_executesql @sSql,N'@sSubID varchar(20) output',@sSubID output;




if ((@sSubID='') or (@sSubID is null))


set @sSubID='000001'


else


begin


declare @iSubID int;


set @iSubID=Convert(int,@sSubID)+1000001;


set @sSubID=SubString(Convert(varchar,@iSubID),2,6)


end


--select @sSubID;


set @sPK=@sHead+@sToday+@sSubID;




return


END
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: