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)

 

 

 

 

 

posted @ 2012-07-12 16:01  Archosaur  Views(2551)  Comments(0Edit  收藏  举报