Pregunta

Tengo una tabla de datos que se actualiza todos los días excepto el sábado y el domingo. El problema radica en que cuando por lo recupero de datos con un máximo de (fecha) y máximo (fecha) -1

Sin embargo, se produce un error al intentar recuperar los datos de hoy (lunes) y ayer (domingo) cuando Max (fecha) -1 no existe.

los datos se puede actualizar el sábado y el domingo, pero ya que la actualización del tipo de cambio I. ¿Le dará los mismos tipos de cambio viernes, sábado y domingo.

Esta es una manera de resolver el problema de esta manera, pero hay una mejor

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

Solución

Aquí hay algunas otras opciones que funcionan con un target_date arbitraria también.

Si sólo tiene un registro para cada fecha,

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

Si usted tiene muchos registros por fecha,

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

También puede utilizar las funciones de fecha / hora de su base de datos para comprobar para el lunes, por supuesto.

Otros consejos

Se puede seleccionar el registro más reciente que es al menos un día de edad. A continuación, el fin de semana no es un caso especial.

Está intentando efectiva para encontrar la fecha de la segunda más alta en un conjunto de datos.

Encuentra la fecha de alta de los datos. Encontrar los valores menos que esto, limitar los resultados a 1 y que tiene el día anterior en el conjunto de datos.

Cualquier otro método fallará en otros días cuando las tasas no se actualizan, por ejemplo, navidad.

hmm you might need som more details on the string

The sql string is

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;

The first date is selected by the user, the next date that date -1 day or -3

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top