我想做月统计报表,但是发现报表中每个月最后一天发生的数没有被包括。代码如下:
//统计9月份的数据
declare @year char(10),@month char(10),@month1 char(10) set @year='2006'
set @month='9'
set @month1='10' //月份加1print rtrim(@year)+'-'+rtrim(ltrim(@month))+'-1'//下个月1号减1就是上个月最后一天
print cast(rtrim(@year)+'-'+rtrim(ltrim(@month1))+'-1' as datetime)-1
if (rtrim(ltrim(@month))='12')
begin
set @month1='1'
end
--------------------------------------------------------
2005-9-1
09 30 2005 12:00AM
--------------------------------------------------------
为什么9月30号的数没有被统计呢?输出的两个时间格式不一样。AM好像是上午。请问我该怎样得到每个月的最后一天的时间戳啊?
//统计9月份的数据
declare @year char(10),@month char(10),@month1 char(10) set @year='2006'
set @month='9'
set @month1='10' //月份加1print rtrim(@year)+'-'+rtrim(ltrim(@month))+'-1'//下个月1号减1就是上个月最后一天
print cast(rtrim(@year)+'-'+rtrim(ltrim(@month1))+'-1' as datetime)-1
if (rtrim(ltrim(@month))='12')
begin
set @month1='1'
end
--------------------------------------------------------
2005-9-1
09 30 2005 12:00AM
--------------------------------------------------------
为什么9月30号的数没有被统计呢?输出的两个时间格式不一样。AM好像是上午。请问我该怎样得到每个月的最后一天的时间戳啊?
解决方案 »
- 如何快速sql2000数据库同时更新问题
- 被困住了 请教大家一个SQL问题
- 在SQL SERVER 中如何打开EXCEL文件!
- 存储过程中怎样给参数设定默认为空值
- 高分请教高手,应该如何写SQL语句或者存储过程,把表A的格式存成表B的格式?
- 70M,12万条txt数据(12到100个字段,用标准的“|”割开,每个字段为30~40个CNMARC字符)导入sql server2000/97出的数据丢失问题!
- 在SQlserver中怎么动态增加列,竹之草大哥
- sql语句怎样declare 数组?
- nvarchar和varchar问题
- 请看看我写的sql语句为什么不对?
- 请高手指点取得一个范围内的随机书
- 如何使用SQL语句查到当前SQL SERVER 2000服务器的IP地址
set @month='09'
set @month1='10' --月份加1print rtrim(@year)+'-'+rtrim(@month)+'-01'
print rtrim(@year)+'-'+rtrim(@month1)+'-01'--下个月1号减1就是上个月最后一天
print convert(varchar(10) , (cast(rtrim(@year)+'-'+rtrim(@month1)+'-01' as datetime) - 1),120)
if (rtrim(ltrim(@month))='12')
begin
set @month1='1'
end
2006-09-01
2006-10-01
2006-09-30
declare @year char(10),@month char(10),@month1 char(10) set @year='2006'
set @month='9'
set @month1='10' --月份加1print convert(datetime, rtrim(@year)+'-'+rtrim(ltrim(@month))+'-1', 120)
--下个月1号减1就是上个月最后一天
print convert(datetime, rtrim(@year)+'-'+rtrim(ltrim(@month1))+'-1', 120)-1if (rtrim(ltrim(@month))='12')
begin
set @month1='1'
end
9月30号,是那天的开始,所以要是带小时和分钟的话,就统计不出来了。
可以把日期转化为同一的格式
如convert(varchar, getdate(), 111)这样不带小时和分钟的格式。
date>='2005-09-01 00:00:00.000' and date<'2005-10-01 00:00:00.000'