1

我有一个数据表,除周六和周日外,每天都会更新。问题在于,当我使用 max (date) 和 max (date) -1 检索数据时

但是当我尝试检索今天(星期一)和昨天(星期日)的数据时,当 max(date)-1 不存在时,它失败了。

数据可以在周六和周日更新,但由于是汇率,我会更新。它会在周五、周六和周日给出相同的汇率吗?

这是以这种方式解决问题的一种方法,但是有更好的方法

string weekend = DateTime.Now.DayOfWeek.ToString();
if (weekend == "Monday")
{
select ***** where max(date)-3 from *****
}
4

5 回答 5

1

您可以选择至少一天前的最新记录。那么周末并不是一个特例。

于 2010-07-05T18:47:47.623 回答
1

您实际上是在尝试在数据集中查找第二高的日期。

查找数据中的最高日期。查找小于此值的值,将结果限制为 1,并且您在数据集中有前一天。

任何其他方法都将在费率未更新的其他日子(例如圣诞节)失败。

于 2010-07-05T18:50:09.133 回答
0

这里还有一些其他选项也适用于任意 target_date。

如果每个日期只有一条记录,

SELECT * FROM table WHERE date<=target_date ORDER BY date DESC LIMIT 2

如果每个日期有很多记录,

SELECT * FROM table WHERE date IN (SELECT DISTINCT date FROM table WHERE date<=target_date ORDER BY date DESC LIMIT 2)

当然,您也可以使用数据库的日期/时间函数来检查星期一。

于 2010-07-05T18:50:30.690 回答
0

嗯,您可能需要有关字符串的更多详细信息

sql字符串是

SELECT m.Navn, m.Beskrivelse, p_idag.Points AS Points_idag, p_igaar.Points AS Points_igaar FROM medlem m LEFT JOIN (SELECT * FROM point WHERE Datoen = '06-09-2010') AS p_idag ON m.Navn = p_idag。 Navn LEFT JOIN (SELECT * FROM point WHERE Datoen = '06-08-2010') AS p_igaar ON m.Navn = p_igaar.Navn ORDER BY m.Navn;

第一个日期由用户选择,下一个日期为-1天或-3

于 2010-07-09T18:41:19.073 回答
0

一个对我有用的简单方法是:

select * from yourtable where date=(select max(date) from yourtable where date < (select max(date) from yourtable))

不知道效率如何

于 2021-01-15T02:38:08.250 回答