数据库有一个sign_dates数据类型为datetime的字段,现在有一个需求,
我现在页面有2个输入框,选择时间范围,比如我选择了2010年9月5号到2010年9月7号的时间段
那么在数据库里就要生成5,6,7号3天的日期记录,这么用sql该怎么写,我的意思是用一天sql语句!
我现在页面有2个输入框,选择时间范围,比如我选择了2010年9月5号到2010年9月7号的时间段
那么在数据库里就要生成5,6,7号3天的日期记录,这么用sql该怎么写,我的意思是用一天sql语句!
解决方案 »
- google地图中如何把cid转换为坐标??
- aspnet中从sql导出到excel2007时为乱码
- js 传json格式参数(有时调用有时不调用问题)诡异!
- 开发用的本机win2003,出现"Service Unavailable"
- 自定义集合类型绑定到DataGrid控件
- 在DataGrid里的CheckBox怎么判断是否选中?
- 是用用户控件来实现吗?
- ReportViewer打印页数,总比实际页数多一页????
- 急急急急急急急急急急急急急急急急!!!!NHibernate 1.2在.NET 4.0使用问题
- Vs2013 js 无法智能提示局部变量
- 用asp.net实现智能建站系统的原理
- 求段代码-网页导出excel,网上找了很多不能用
declare @t1 datetime,@t2 datetime,@t3 datetime
set @t1 = '2010-01-01'
set @t2 = '2010-04-01'
set @t3 = @t1
while datediff(d,@t3,@t2) >=0
begin
select @t3 = dateadd(d,1,@t3)
--print convert(varchar(10),@t3,120)
insert into tb values(convert(varchar(10),@t3,120),其他列值)
end
可以注释掉插入语句,去掉print语句的注释看效果。
from master..spt_values
where type='P' and dateadd(day,number,'20100905')<='20100907'
/*
-----------------------
2010-09-05 00:00:00.000
2010-09-06 00:00:00.000
2010-09-07 00:00:00.000
*/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,wcd>
-- Create date: <Create 2010.9.2>
-- Description: <Description ,请假一天以上生成多条签到表记录,>
-- =============================================
CREATE PROCEDURE [CreateManySignByLeave]
-- Add the parameters for the stored procedure here
@beginTime datetime,
@endTime datetime,
@type int --请假类型
AS
BEGIN
DECLARE @signTime datetime
set @signTime=@beginTime
while datediff(d,@signTime,@endTime) >=0
begin
select @signTime = dateadd(d,1,@signTime)
insert into l_sign(sign_date,in_state,af_state,out_state)
values(convert(varchar(10),@signTime,120),@type,@type,@type)
endEND
GO为什么我的datetime类型,当我选择起始时间是2010-9-4,结束时间2010-9-7
它会插入的是2010-9-5到2010-9-8的时间呢?