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

时间:2020-12-27 20:11:56

呵呵,这个还是经常要用到的,记载下下。查找到的和现用的记录下:

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