declare @a datetime ,@end datetime,@hour int
set @a = '2009-2-23 10:10:3'
set @hour = 31set @end = (case when @hour > 10 then dateadd(hh,@hour%10,dateadd(dd,@hour/10,@a)) end)
select @end
/*
-----------------------
2009-02-26 11:10:03.000(1 row(s) affected)
*/
解决方案 »
- 初学菜鸟问题
- 帮忙写下查询的sql语句谢谢!
- VS2005连接到sqlserver2000(非默认实例NOone)
- *********************请问关于SQLSERVER 2005 EXPRESS的问题**********************
- 请问表中的列名用中文和英文有什么不同吗?
- 按照姓名取每六个人一组,要求不能在每组中有相同城市的人
- 高分求救
- 我想创建一个存储过程,要用到like,不知道怎么创建?
- 如果删除SQL数据库表中的未使用空间?
- ASP与SQL Server建立连接在人家服务器上运行的问题,很急很急 谢谢帮忙!!
- 类似中关村里面不同产品不同的参数应该怎么建表?
- 关于sql中的timestamp字段的问题
用小时数除以10作为天数? dateadd的时候用天数来加?不过还是没看懂楼主的需求...
我就是有个开始日期,形如'2009-3-19 15:00:00 000'
因为生产需要算出他的结算时间,比如我一个订单需要三小时完成,这样他的结束时间就是'2009-3-19 18:00:00 000'
,然后下个订单的开始时间就是'2009-3-19 18:00:00 000',下个订单需要15小时完成,这可不能直接加啊
因为一天只有上10小时班。DATEADD函数加小时数是以24小时才跳下一天,因为上班一天是10小时,所以就要改成10小时就会算到下一天去。
最好时间能够控制在早上8点到下午18点,这样刚好10小时
set @a = '2009-2-23 10:10:3'
set @hour =10
set @end = dateadd(hh,@hour%10,dateadd(dd,@hour/10,@a))
select @end
SET @fstartdate='2009-3-10 09:00:00' SET @hour=51
DECLARE @endDate DATETIME,@I INT,@addHour INT
SET @addHour=1
WHILE @addHour<=@hour
BEGIN
PRINT @addHour
SET @endDate=DATEADD(hh,1,@fstartdate) --2009-03-11 19:00:00
PRINT CONVERT(VARCHAR(20),@endDate,20)
IF DATEADD(hh,1,@fstartdate)>=convert(VARCHAR(10),@fstartdate,126)+' 18:00:00'
SET @endDate=DATEADD(hh,DATEDIFF(hh,CONVERT(DATETIME,convert(VARCHAR(10),@fstartdate,126)+' 18:00:00'),DATEADD(hh,1,@fstartdate)),CONVERT(VARCHAR(10),DATEADD(dd,1,@fstartdate),126)+' 08:00:00')
SET @fstartdate=@endDate
SET @addHour=@addHour+1
END
PRINT CONVERT(VARCHAR(20),@endDate,20)