Hoy encontré un problema en el trabajo. Necesitaba consultar por tiempo, pero los resultados de la consulta fueron incorrectos. Por ejemplo, si desea conocer los miembros que se registraron en el sitio web entre el 12 de octubre de 2007 y el 31 de octubre de 2007, después de seleccionar la fecha, haga clic en el botón de consulta y encontrará que la información sobre los miembros registrados el 31/10/2007 básicamente no aparece y los resultados son los mismos después de varias pruebas. El depurador encontró que había un problema con la declaración SQL.
La declaración SQL es la siguiente: SELECT * FROM userinfo WHERE regtime >= '2007-10-12' AND regtime <= '2007-10-31'. A primera vista, parece que no hay ningún error en esta declaración SQL, pero después de comparar los valores guardados en los campos correspondientes en la base de datos, se descubre que los valores guardados no tienen la forma de un simple fecha, pero en forma de fecha + hora, es decir: yyyy-MM-dd HH:mm:ss, cuando la declaración SQL determina el tamaño de regtime y '2007-10-31', pensará que '2007- 10-31' está escrito de forma incompleta, por lo que los dos valores no se considerarán iguales. ¿Qué hacer?
No se preocupe, ASP nos proporciona funciones de suma y resta de fechas para ayudarnos a resolver este problema.
1. Agregar fechas
Función DateAdd
Devuelve la fecha a la que se ha agregado el intervalo de tiempo especificado.
DateAdd(intervalo, número, fecha)
La sintaxis de la función DateAdd tiene los siguientes parámetros
(1) se requiere intervalo. Una expresión de cadena que representa el intervalo de tiempo que se agregará. Consulte la sección Configuración para conocer los valores numéricos.
(2) se requiere número. Expresión numérica que indica el número de intervalos de tiempo que se agregarán. Las expresiones numéricas pueden ser positivas (obtener una fecha en el futuro) o negativas (obtener una fecha en el pasado).
(3) se requiere fecha. Variante o texto que representa la fecha a la que se añade el intervalo.
configuración
El parámetro de intervalo puede tener los siguientes valores:
Descripción de la configuración
aaaa año
q cuarto
m mes
y el número de días en un año
día d
w Día de la semana
semanas semanas
h horas
n minutos
s segundos
ilustrar
Puede utilizar la función DateAdd para sumar o restar un intervalo de tiempo específico de una fecha. Por ejemplo, puede utilizar DateAdd para calcular una fecha a 30 días del día actual o una hora a 45 minutos a partir de ahora. Para agregar un intervalo de tiempo en días hasta la fecha, puede usar los días del año (y), los días (d) o los días de la semana (w).
La función DateAdd no devuelve fechas no válidas. El siguiente ejemplo añade un mes al 31 de enero de 1995:
Nueva fecha = FechaAgregar(m, 1, 31 de enero de 1995)
En este ejemplo, DateAdd devuelve el 28 de febrero de 1995, no el 31 de febrero de 1995. Si la fecha es el 31 de enero de 1996, se devuelve el 29 de febrero de 1996 porque 1996 es un año bisiesto.
Si la fecha calculada es anterior al 100 d. C., se producirá un error.
Si el número no es un valor largo, se redondea al entero más cercano antes del cálculo.
2. Resta de fechas
Función de diferencia de fecha
Devuelve el intervalo de tiempo entre dos fechas.
DateDiff(intervalo, fecha1, fecha2 [, primer día de la semana [, primera semana del año]])
La sintaxis de la función DateDiff tiene los siguientes parámetros:
(1) se requiere intervalo. Una expresión de cadena utilizada para calcular el intervalo de tiempo entre fecha1 y fecha2. Consulte la sección Configuración para conocer los valores numéricos.
(2) fecha1, fecha2 son obligatorias. Expresión de fecha. Se utilizan dos fechas para el cálculo.
(3) Primer día de la semana opcional. Una constante que especifica el primer día de la semana. Si no se especifica, el valor predeterminado es el domingo. Consulte la sección Configuración para conocer los valores numéricos.
(4) Primera semana del año opcional. Constante que especifica la primera semana del año. Si no se especifica, el valor predeterminado es la semana del 1 de enero. Consulte la sección Configuración para conocer los valores numéricos.
configuración
El parámetro de intervalo puede tener los siguientes valores:
Descripción de la configuración
aaaa año
q cuarto
m mes
y el número de días en un año
día d
w Día de la semana
semanas semanas
h horas
n minutos
s segundos
El parámetro primer día de la semana puede tener los siguientes valores:
Descripción del valor constante
vbUseSystem 0 Utilice la configuración API de compatibilidad con idiomas nacionales (NLS).
vbDomingo 1 Domingo (predeterminado)
vblunes 2 lunes
vbMartes 3 Martes
vbmiércoles 4 miércoles
vbjueves 5 jueves
vbviernes 6 viernes
vbsábado 7 sábado
El parámetro primera semana del año puede tener los siguientes valores:
Descripción del valor constante
vbUseSystem 0 Utilice la configuración API de compatibilidad con idiomas nacionales (NLS).
vbFirstJan1 1 Comienza con la semana del 1 de enero (predeterminado).
vbFirstFourDays 2 comienza con la primera semana del año nuevo que tiene al menos cuatro días.
vbFirstFullWeek 3 comienza con la primera semana completa del nuevo año.
ilustrar
La función DateDiff se utiliza para determinar el número de intervalos de tiempo específicos que existen entre dos fechas. Por ejemplo, puede utilizar DateDiff para calcular el número de días entre dos fechas o el número de semanas entre hoy y el último día del año.
Para calcular la cantidad de días entre la fecha 1 y la fecha 2, puede usar la cantidad de días en un año (y) o días (d). Cuando el intervalo es el número de días de la semana (w), DateDiff devuelve el número de semanas entre dos fechas. Si la fecha1 es lunes, DateDiff cuenta el número de lunes antes de la fecha2. Este resultado contiene fecha2 pero no fecha1. Si el intervalo es semanas (ww), la función DateDiff devuelve el número de semanas entre dos fechas en la tabla del calendario. La función cuenta el número de domingos entre la fecha1 y la fecha2. DateDiff evaluará la fecha2 si la fecha2 es domingo, pero no la fecha1 incluso si la fecha1 es domingo.
Si la fecha1 es posterior a la fecha2, la función DateDiff devuelve un número negativo.
El parámetro primer día de la semana afecta los cálculos que utilizan los símbolos separadores w y ww.
Si fecha1 o fecha2 es una fecha literal, el año especificado se convierte en una parte fija de la fecha. Pero si fecha1 o fecha2 están entre comillas () y se omite el año, el año actual se insertará cada vez que se evalúe la expresión fecha1 o fecha2 en el código. Esto hace posible escribir código de programa que funcione para diferentes años.
Cuando el intervalo es el año (yyyy), compare el 31 de diciembre con el 1 de enero del año siguiente. Aunque en realidad la diferencia es de solo un día, DateDiff devuelve 1, lo que indica una diferencia de un año.