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

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

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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值