我希望在开始日期和结束日期之前获得一条记录
DtpFrom means – 'date picker from
DtpTo means – 'date picker to
VB 6代码
sdate = DateToString(dtpFrom)
edate = DateToString(dtpTo)
QUERY
Where DATE BETWEEN '" & sdate & "' AND '" & edate & "'"
我希望在sdate和edate
之前获得一条记录我试过这段代码
VB 6代码
s1sdate = -sdate
e1edate= -edate
QUERY
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 & "'
需要VB 6代码或访问查询帮助。
答案 0 :(得分:0)
SELECT * FROM whatever
WHERE DATE < sdate
ORDER BY DATE DESC
LIMIT 1
如果您想要“开始日期和结束日期之前的记录之前”,我认为结束日期并不重要
但是如果您希望记录在开始日期之前和记录在结束日期之前,您可以使用edate而不是sdate重复上述查询。
这就是查询的实际含义:在此之前选择DATE的每条记录(sdate)。对于所有这些记录,请按DATE以降序(DESC)对它们进行排序。只返回第一个(LIMIT 1)。
注意:某些实现方式各不相同。您可能需要在“SELECT”之后使用“TOP 1”而不是“LIMIT 1”