我是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总共一个月也接缝错了?
答案 0 :(得分:0)
我在sqlite language documentation中找不到任何DATEADD或DATEDIFF函数,但如果你的意思是在... SQL Server,快速谷歌搜索将为您提供这些two answers:
DATEDIFF()函数返回两个日期之间的时间。
所以DATEDIFF(yy,0,GETDATE())
将返回0到现在之间的年份时差。
DATEADD()函数从日期添加或减去指定的时间间隔。
所以DATEADD(yy,*your_time_difference*,0)
会返回日期0并添加* your_time_difference *年。
类似于d2。
答案 1 :(得分: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)
- 获得上个月的计数。