Domanda

Ho una tabella di dati che viene aggiornato tutti i giorni tranne Sabato e Domenica. Il problema sta nel modo che quando posso recuperare i dati con max (data) e massimo (data) -1

Ma non riesce quando si tenta di recuperare i dati per oggi (Lunedi) e ieri (Domenica) quando Max (data) -1 non esiste.

I dati possono essere aggiornati su Sabato e Domenica, ma dal momento che di aggiornamento dei tassi di cambio io. Intende dare gli stessi tassi di cambio Venerdì, sabato e domenica.

Questo è un modo per risolvere il problema in questo modo, ma v'è una migliore

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

Soluzione

Ecco alcune altre opzioni che funzionano con una target_date arbitraria pure.

Se si dispone di un solo record per ogni data,

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

Se si dispone di molti record per la data,

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

Si potrebbe anche utilizzare le funzioni di data / ora del vostro database per verificare la presenza di Lunedi, naturalmente.

Altri suggerimenti

È possibile selezionare il nuovo record che è di almeno un giorno di vita. Poi il fine settimana non è un caso speciale.

si sta effettivamente cercando di trovare la data secondo più alto in un set di dati.

Trova la data più alta nei dati. Trova valori inferiori a questa, limitare i risultati a 1 e si ha il giorno precedente nel set di dati.

Qualsiasi altro metodo fallirà in altri giorni quando i tassi non vengono aggiornati, ad esempio, Natale.

hmm potrebbe essere necessario som maggiori dettagli sulla stringa

La stringa sql è

Selezionare m.Navn, m.Beskrivelse, p_idag.Points AS Points_idag, p_igaar.Points AS Points_igaar DA medlem m LEFT JOIN (SELECT * FROM punto in cui Datoen = '06 -09-2010' ) AS p_idag ON m.Navn = p_idag.Navn LEFT JOIN (SELECT * FROM punto in cui Datoen = '06 -08-2010' ) AS p_igaar ON m.Navn = p_igaar.Navn ORDER BY m.Navn;

La prima data è selezionata dall'utente, la prossima data tale data -1 giorno o -3

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top