sql中格式化字符串或时间,遇到多少,写多少,持续记录。
--求开始时间和结束时间相差的天数 DECLARE @result int DECLARE @StartDayStartTime DATETIME DECLARE @EndDayEndTime DATETIME set @result=DATEDIFF (d,CONVERT(Datetime,@StartDay),CONVERT(Datetime,@EndDay)) --将2012-07-12 15:56:53 格式化为20120712 ,这种需求大多是因为每日数据量更新过大,所以为每天创建一张表,在实现跨多天查询的时候,你懂得。 --执行sql,并返回,最后求和,@sql务必要声明为nvarchar类型 declare @sql nvarchar(500) declare @sm decimal(18,2) --开始里程 declare @em decimal(18,2)--结束里程 declare @sum decimal(18,2)--当天时间段内的里程 declare @temp decimal(18,2)--里程变量 set @sql='SELECT top 1 @temp=Convert(decimal(18,2),'+@GpsPath+'.Mileage) FROM '+@GpsPath+' WHERE GpsTime<='''+CONVERT(varchar(100),@E, 21)+''' AND TerminalNo=''02200051'' and '+@GpsPath+'.Mileage>0 ORDER BY GpsTime desc' exec sp_executesql @sql,N'@temp decimal(18,2) output',@em out print @em set @sql='SELECT top 1 @temp=Convert(decimal(18,2),'+@GpsPath+'.Mileage) FROM '+@GpsPath+' WHERE GpsTime>='''+CONVERT(varchar(100),@S, 21)+''' AND TerminalNo=''02200051'' and '+@GpsPath+'.Mileage>0 ORDER BY GpsTime asc' exec sp_executesql @sql,N'@temp decimal(18,2) output',@sm out print @sm set @sum=Convert(decimal(18,2),@em)-Convert(decimal(18,2),@sm)