Hoy encontré un problema en el trabajo. Necesitaba consultar por tiempo, pero los resultados de la consulta fueron incorrectos. Por ejemplo, para 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 "Consultar" para encontrar los miembros que se registraron el 31 de octubre de 2007. La información no se muestra en absoluto 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. Adición de fecha
La 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.
(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.
Descripción 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 dentro de 30 días o una hora dentro de 45 minutos. Para agregar un intervalo de tiempo en "días" hasta la fecha, puede utilizar "días del año" ("y"), "días" ("d") o "días de la semana" ("w").
La función DateAdd no devuelve fechas no válidas. El siguiente ejemplo agrega un mes al 31 de enero de 1995:
NewDate = DateAdd("m", 1, "31-Jan-95")
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. La función DateDiff de resta de fechas 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.
(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.
(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.
Descripción 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 el número de días entre la fecha 1 y la fecha 2, puede utilizar "días del año" ("y") o "días" ("d"). Cuando el intervalo es "día 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 "semana" ("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 argumento del 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 "año" ("aaaa"), compare el 31 de diciembre con el 1 de enero del año siguiente. Aunque la diferencia en realidad es de solo un día, DateDiff devuelve 1, lo que indica una diferencia de un año.