易截截图软件、单文件、免安装、纯绿色、仅160KB

巧用SQL Server日期类型数据二进制输出计算时间差

1、SQL Server日期数据库内部表示及查询输出:
SQL Server内部对DateTime类型的表示是用8个字节来表示,其中前4个字节表示的数值为自1900年1月1日零时以来的天数,后四个字节是天数之外的有多少个1/300秒,这也说明SQL Server内部表示时间的精度为1/300秒,约3.3毫秒。
常规的SQL查询,正常日期输出格式为:yyyy-MM-dd hh:mm:ss.SSS,这也是中文操作系统的日期格式,可以通过修改操作系统日期表达格式来影响SQL Server缺省的日期输出格式。但是,有些时候缺省的日期输出格式并不是我们需要的,特别是基于时间差的应用需求。
2、应用需求:
基于一系列时间点的数据记录分析、统计某种结果。比如GPS定位设备按一定时间间隔回传位置数据并记录到数据库中,数据包括经纬度、时间、速度等,现在需要基于这些回传数据统计是否在某地有停留,停留时间、开始时间、结束时间。停留标志是速度为0。显示,这需要根据数据记录之间的差值做统计计算。
3、适合需求的输出及转换、处理:
如果按照缺省的SQL Server日期输出格式,输出内容可映射为编程语言相关的数据类型,如Java可以是String、Date,转为为Date有一定统计数据量的话,这个转换本身就是低效和耗时的,实际过程可能是先从SQL Server内部表示转换为yyyy-MM-dd hh:mm:ss.SSS字符串,再从这个字符串转换为Date;作为String使用也需要转换为Date之后才可以做时间差运算,同样低效。
SQL Server内部数据表示格式其实已经适合表达时间差了,是不是能直接利用。SQL Server有cast函数,可以将日期输出为二进制数据。如:
select longi, lati, speed, cast(gpsDate as binary(8)) as gpsDate from loc_history
后续处理代码片段为:
float lon = rs.getFloat("longi");
float lat = rs.getFloat("lati");
byte time[] = rs.getBytes("gpsDate");
获得经纬度、时间二进制表示
int days = ((time[0] & 0x00ff) << 24) + ((time[1] & 0x00ff) << 16)
                    + ((time[2] & 0x00ff) << 8) + (time[3] & 0x00ff);
int seconds = ((time[4] & 0x00ff) << 24) + ((time[5] & 0x00ff) << 16)
                    + ((time[6] & 0x00f


相关文档:

SQL Server之组件划分

      从不同的角度,我们可以把SQL Server数据平台划分为多个组件。我们下面按照SQL Server Internal Team通常的划分原则,把SQL Server数据平台划分为如下:
SSAS: SQL Server Analysis Service。主要用来做分析用,比如Cube,可以从不同的角度审视数据。
SSIS: SQL Server Integration Servi ......

SQL应用日志

UPDATe [Sale_Goods]  SET [Catalog33_ID] = [Catalog].[ID]
from  [Sale_Goods]
LEFT OUTER JOIN [chdy222] ON [Sale_Goods].[Code] = [chdy222].[ID]
LEFT OUTER JOIN [Catalog] ON [chdy222].[ufidaname] = [Catalog].[Name] and [Catalog].[Type]=33
WHERE [Catalog].[ID] IS NOT NULL ......

监控SQL Server2005数据库的运行状况

能监控SQL Server数据库运行的情况,对服务器来说都是一件非常重要的事,下面开始介绍。
Microsoft SQL Server 2005 提供了一些工具来监控数据库。方法之一是动态管理视图。动态管理视图 (DMV) 和动态管理函数 (DMF) 返回的服务器状态信息可用于监控服务器实例的运行状况、诊断问题和优化性能。
常规服务器动态管理对象包 ......

SQL语句:把统计结果按照特定的列值转换成多列

要求:查询每个老师所带毕业设计的汇总情况,毕业设计学生分本科、专科,院外、院内,要求得到的结果形式如下:
教师名 院内本科 园内专科 院外本科 院外专科 合计
相关的表有:学生表(包含学生层次)、教师表(教师名)、学生课题表(学生教师对应关系以及院内院外信息)。
SQL语句如下:
select
    ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号