我想在开始日期和结束日期之前得到一条记录
DtpFrom means – 'date picker from
DtpTo means – 'date picker toVB 6代码
sdate = DateToString(dtpFrom)
edate = DateToString(dtpTo)查询
Where DATE BETWEEN '" & sdate & "' AND '" & edate & "'"我想在sdate和edate之前得到一条记录。
我试过这段代码
VB 6代码
s1sdate = -sdate
e1edate= -edate查询
Where DATE BETWEEN '" & s1date & "' AND '" & e1date & "'"但它只有一天会减去
示例
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),并且其中有一些行
ID --Value
1------70
2------100
3------150
8------200
20-----250
45-----280 我们想要进行查询,以获取每个行ID、值和前一个行值,其中数据显示如下
ID --- Value ---Prev_Value
1 ----- 70 ---------- 0
2 ----- 100 -------- 70
3 ----- 150 -------- 100
8 ----- 200 -------- 150
20 ---- 250 -------- 200
45 ---- 280 -------- 250 我执行了以下查询,但我认为它在处理大量数据时的性能非常差
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查询帮助。
发布于 2009-06-30 08:23:32
SELECT * FROM whatever
WHERE DATE < sdate
ORDER BY DATE DESC
LIMIT 1我不认为结束日期真的很重要,如果你想要“在开始和结束日期之间的记录之前的日期”
但是,如果您希望记录恰好在开始日期之前,而记录恰好在结束日期之前,则只需使用edate而不是sdate重复上述查询。
这就是查询的实际含义:选择在此记录(sdate)之前具有DATE的每一条记录。对于所有这些记录,按日期以降序方式进行排序(DESC)。只返回第一个(LIMIT 1)。
注意:有些实现会有所不同。您可能需要在单词SELECT之后使用TOP 1,而不是LIMIT 1
https://stackoverflow.com/questions/1062406
复制相似问题