我有一个数据表,除星期六和星期日外每天都会更新。 问题在于,当我使用max(date)和max(date)-1
检索数据时但是当我尝试检索今天(星期一)和昨天(星期日)的数据时,当max(date)-1不存在时,它失败了。
数据可以在星期六和星期日更新,但因为它是我更新的汇率。 它会在周五,周六和周日给出相同的汇率。
这是以这种方式解决问题的一种方法,但有一个更好的
string weekend = DateTime.Now.DayOfWeek.ToString();
if (weekend == "Monday")
{
select ***** where max(date)-3 from *****
}
答案 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