0

我是 SQLCE 的新手,我并不真正理解我们使用的代码中的一些代码行。有一个记录日志的数据库,我们尝试检索日志数据,有人可以帮我下面的代码检索哪个时间跨度吗?,因为在日志记录的某个地方,我们在时间跨度上有一个错误,但我无法读取这种格式(我是新手)

d1 = (int)SqlHelper.ExecScalar("select count(*) from Report where OpenTime  > DATEADD(yy,DATEDIFF(yy,0,GETDATE()),0) and type='0'");

还有一个

 d2 = (int)SqlHelper.ExecScalar("select count(*) from Report where OpenTime  between DATEADD(mm,-1,DATEADD(mm,DATEDIFF(mm,0,GETDATE()),0)) and DATEADD(mm,DATEDIFF(mm,0,GETDATE()),0) and type='0'");

更新其 SQLCE(服务器),一个用于 CE 环境的 SQL 数据库

d1 和 d2 收到什么日期时间跨度?

D1 应该是一年的总和,但接缝错误

D2一个月一共还缝错了?

4

2 回答 2

0

我在sqlite 语言文档中找不到任何 DATEADD 或 DATEDIFF 函数,但如果您指的是 SQL Server 中的函数,快速谷歌搜索将为您提供以下两个 答案

DATEDIFF() 函数返回两个日期之间的时间。

所以DATEDIFF(yy,0,GETDATE())将返回 0 和现在之间的年时差。

DATEADD() 函数从日期中添加或减去指定的时间间隔。

所以DATEADD(yy,*your_time_difference*,0)将返回日期 0 并添加 *your_time_difference* 年。

d2 类似。

于 2013-07-23T14:31:14.417 回答
0

在 SQLServer 中,前一个查询选择一个计数,其中 type = '0' 并且 OpenTime 大于一年中第一天的午夜;这可能应该被修改为>=(而不是>)以获得年初至今。

同样,在 SQLServer 中,后一个查询选择一个计数,其中 type = '0' 并且 OpenTime 介于上个月第一天的午夜和当月第一天的午夜之间;这可能应该修改为:

OpenTime >= DATEADD(mm,-1,DATEADD(mm,DATEDIFF(mm,0,GETDATE()),0)) and
OpenTime < DATEADD(mm,DATEDIFF(mm,0,GETDATE()),0)

- 获取上个月的计数。

于 2013-07-23T14:31:40.687 回答