选择最大日期和之前的日期

时间:2010-07-05 18:30:13

标签: c# datetime maxdate

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

检索数据时

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

数据可以在星期六和星期日更新,但因为它是我更新的汇率。 它会在周五,周六和周日给出相同的汇率。

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

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

4 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

您正在有效地尝试在数据集中找到第二高的日期。

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

如果费率未更新,其他任何方法都会失败,例如圣诞节。

答案 2 :(得分: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)

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

答案 3 :(得分: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