SqlServer Oracle 时间函数 同C++ time 您所在的位置:网站首页 串口线配置如何配电脑使用 SqlServer Oracle 时间函数 同C++ time

SqlServer Oracle 时间函数 同C++ time

#SqlServer Oracle 时间函数 同C++ time| 来源: 网络整理| 查看: 265

C# 免安装ORACLE客户端访问数据库 类型:数据库类大小:42.1M语言:中文 评分:4.2 标签: 立即下载

做一个自动任务,需要查询指定期限内数据,比如按照自然月,按照自然日,按照自然周,需要支持Oracle 和 SqlServer数据库。 数据库中表字段receivetime,由C++负责写入,内容为time_t的32位值,也就是1970年到现在的秒数。

研究了一天,得出如下语句:

 

对于SqlServer,

查询前一天的数据,

select * from table_name where datediff ( day, dateadd(day, (ReceiveTime+8*3600)/60/60/24 - 1, '19700101'), getdate() ) = 2; 请关注其中的8*3600,这是因为,SqlServer中,按照UTC计算标准时间,(ReceiveTime)/60/60/24计算的标准时间,但是数据库服务器时区是东八区,故需要加上这个值。

以下同理,不解释。

查询前一周的数据,

 

查询前一周 SELECT * FROM tablename WHERE datediff (day, dateadd (day, (ReceiveTime + 8 * 3600) / 60 / 60 / 24, '1970-01-01 00:00:00'), getdate ()) >= DatePart (Weekday, getdate ()) + 1 and datediff (day, dateadd (day, (ReceiveTime + 8 * 3600) / 60 / 60 / 24, '1970-01-01 00:00:00'), getdate ()) = ((TRUNC (SYSDATE - 1, 'dd') - TO_DATE ('19700101', 'yyyymmdd') ) * 24 * 3600 - 8 * 3600) AND receivetime = ( ((trunc(last_day( add_months(sysdate, -2 )),'dd') + 1) - TO_DATE ('19700101', 'yyyymmdd')) * 24 * 3600 - 8 * 3600 ) AND receivetime < (((trunc(last_day( add_months(sysdate, -1 )),'dd') + 1) - TO_DATE ('19700101', 'yyyymmdd')) * 24 * 3600 - 8 * 3600);



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有