首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获取开始日期和结束日期之前的一条记录

如何获取开始日期和结束日期之前的一条记录
EN

Stack Overflow用户
提问于 2009-06-30 08:20:09
回答 1查看 1.7K关注 0票数 0

我想在开始日期和结束日期之前得到一条记录

代码语言:javascript
复制
DtpFrom means – 'date picker from
DtpTo means – 'date picker to

VB 6代码

代码语言:javascript
复制
sdate = DateToString(dtpFrom)
edate = DateToString(dtpTo)

查询

代码语言:javascript
复制
Where DATE BETWEEN '" & sdate & "' AND '" & edate & "'"

我想在sdate和edate之前得到一条记录。

我试过这段代码

VB 6代码

代码语言:javascript
复制
s1sdate = -sdate
e1edate= -edate

查询

代码语言:javascript
复制
Where DATE BETWEEN '" & s1date & "' AND '" & e1date & "'"

但它只有一天会减去

示例

代码语言:javascript
复制
Selecting 03/05/2009 to 03/06/2009 from date picker, but it showing record from
02/05/2009 to 02/06/2009.

我想从选择日期和结束日期开始显示一条记录,而不是前一天,因为我的表不是连续日期。

其他示例:

如果我们有一个表和行ID(int),Value(Money),并且其中有一些行

代码语言:javascript
复制
ID --Value
1------70 
2------100 
3------150 
8------200 
20-----250 
45-----280 

我们想要进行查询,以获取每个行ID、值和前一个行值,其中数据显示如下

代码语言:javascript
复制
ID --- Value ---Prev_Value 
1 ----- 70 ---------- 0 
2 ----- 100 -------- 70 
3 ----- 150 -------- 100 
8 ----- 200 -------- 150 
20 ---- 250 -------- 200 
45 ---- 280 -------- 250 

我执行了以下查询,但我认为它在处理大量数据时的性能非常差

代码语言:javascript
复制
select  t1.id, t1.value, t2.value  from  table  t1 inner join table  t2  on t1.id = t2.id where t2.value =  (select max(value)  from  table t where t.value< t1.value and t.id = t1.id ) and  T1.value BETWEEN '" & sdate & "' AND '" & edate & "'

需要VB6代码或ACCESS查询帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-06-30 08:23:32

代码语言:javascript
复制
SELECT * FROM whatever
WHERE DATE < sdate
ORDER BY DATE DESC
LIMIT 1

我不认为结束日期真的很重要,如果你想要“在开始和结束日期之间的记录之前的日期”

但是,如果您希望记录恰好在开始日期之前,而记录恰好在结束日期之前,则只需使用edate而不是sdate重复上述查询。

这就是查询的实际含义:选择在此记录(sdate)之前具有DATE的每一条记录。对于所有这些记录,按日期以降序方式进行排序(DESC)。只返回第一个(LIMIT 1)。

注意:有些实现会有所不同。您可能需要在单词SELECT之后使用TOP 1,而不是LIMIT 1

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1062406

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档