获取当前月的第一天和最后一天
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
在设置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
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 |
这个存储过程的作用是自动生成编号,比如我们在数据库中有个**票编号字段,该存储过程可以生成格式为头(自己定义的一个头,比如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
相关文章推荐
- MySQL里获取当前week、month、quarter的第一天/最后一天
- js获取当前月的第一天和最后一天的小例子
- js获取当前月的第一天和最后一天的小例子
- MySQL里获取当前week、month、quarter的第一天/最后一天
- java获取当前月第一天和最后一天,上个月第一天和最后一天【转】
- java获取当前月第一天和最后一天,上个月第一天和最后一天
- 获取当前月第一天和最后一天
- MySQL里获取当前week、month、quarter的第一天/最后一天
- golang 获取当前日期,月份第一天和最后一天
- java获取指定和当前月第一天和最后一天,上个月第一天和最后一天
- java获取本月开始时间和结束时间、上个月第一天和最后一天的时间以及当前日期往前推一周、一个月
- Java获取当前时间的上一个月和下一个月,第一天和最后一天,任意时间的第一天和最后一天,任意时间上一个月和下一个月
- js获取当前月的第一天和最后一天
- java获取当前月和周的第一天和最后一天
- js Xdate 获取当前月的第一天和最后一天
- 获取当前月的第一天和最后一天
- C# 获取当前月第一天和最后一天 计算两个日期差多少天
- 获取当前月份的第一天和最后一天
- JAVA获取当前年的第一天和最后一天
- 帆软日期函数获取当前月第一天和最后一天