Tengo un start_date
y end_date
. Quiero obtener la lista de fechas entre estas dos fechas. ¿Alguien puede ayudarme a señalar el error en mi consulta?
select Date,TotalAllowance
from Calculation
where EmployeeId=1
and Date between 2011/02/25 and 2011/02/27
Aquí Date
hay una datetime
variable.
sql
sql-server
tsql
datetime
sql-server-2005
Neeraj
fuente
fuente
between
debería funcionar como se espera.Dado que una fecha y hora sin un segmento de tiempo específico tendrá un valor de
date 00:00:00.000
, si desea asegurarse de obtener todas las fechas en su rango, debe proporcionar el tiempo para su fecha de finalización o aumentar su fecha de finalización y uso<
.O
O
NO use lo siguiente, ya que podría devolver algunos registros del 28/02/2011 si sus horarios son 00: 00: 00.000.
fuente
'2011/02/28 00:00:00.000'
?convert(date, Date) between '2011/02/25' and '2011/02/27'
(al menos con un servidor MS SQL reciente). Laconvert()
parte se encargará de eliminar la parte del tiempo y la comparación entre ambos funcionará como se esperaba.Prueba esto:
Los valores de fecha deben escribirse como cadenas.
Para garantizar que su consulta para SQL Server 2008 y
Date
versiones posteriores esté preparada para el futuro, debe escaparse porque es una palabra reservada en versiones posteriores.Tenga en cuenta que las fechas sin horario toman la medianoche como valores predeterminados, por lo que es posible que no tenga el valor correcto allí.
fuente
Aquí, primero agregue un día a la fecha final actual, será
2011-02-28 00:00:00
, luego reste un segundo para hacer la fecha final2011-02-27 23:59:59
. Al hacer esto, puede obtener todas las fechas entre los intervalos dados.fuente
- si el tipo de datos es diferente
fuente
Esta consulta es válida para recuperar los valores entre la fecha actual y sus próximas 3 fechas
Esto eventualmente agregará 3 días adicionales de búfer a la fecha actual.
fuente
Esto es muy antiguo, pero dada la gran cantidad de experiencias que he tenido con las fechas, es posible que desee considerar esto: las personas usan diferentes configuraciones regionales, como tal, algunas personas (y algunas bases de datos / computadoras, dependiendo de la configuración regional) pueden leer esto fecha 11/12/2016 como 11 de diciembre de 2016 o 12 de noviembre de 2016. Aún más, el 16/11/12 suministrado a la base de datos MySQL se convertirá internamente al 12 de noviembre de 2016, mientras que la base de datos de Access que se ejecuta en una computadora de configuración regional del Reino Unido interpretará y guárdelo como el 16 de noviembre de 2012.
Por lo tanto, hice que mi política sea explícita cada vez que voy a interactuar con fechas y bases de datos. Así que siempre proporciono mis consultas y códigos de programación de la siguiente manera:
Tenga en cuenta también que Access aceptará el #, por lo tanto:
pero el servidor MS SQL no lo hará, por lo que siempre uso "'" como se indicó anteriormente, que ambas bases de datos aceptan.
Y cuando obtengo esa fecha de una variable en el código, siempre convierto el resultado en una cadena de la siguiente manera:
Estoy escribiendo esto porque sé que a veces algunos programadores pueden no estar lo suficientemente interesados en detectar la conversión inherente. No habrá errores para las fechas <13, ¡solo resultados diferentes!
En cuanto a la pregunta formulada, agregue un día a la última fecha y haga la comparación de la siguiente manera:
fuente
fuente
Intente poner las fechas entre # #, por ejemplo:
Funcionó para mi.
fuente
si su fecha en 24 horas y comienza en la mañana y termina en la noche debería agregar algo como:
fuente
La mejor consulta para la fecha seleccionada entre la fecha actual y tres días atrás :
mejor consulta para la fecha seleccionada entre la fecha actual y los próximos tres días :
fuente
Verifique los siguientes ejemplos: tanto en funcionamiento como fuera de trabajo.
O
O
Y a continuación no funciona:
fuente
podemos usar el medio para mostrar datos de dos fechas, pero esto buscará todos los datos y los comparará, por lo que nuestro proceso se ralentizará para obtener grandes datos, por lo que sugiero que todos usen
datediff
:aquí el calendario es la Tabla, dt como la variable de fecha de inicio y dt2 es la variable de fecha de finalización.
fuente
Me gusta usar la sintaxis '1 MonthName 2015' para las fechas, por ejemplo:
para fechas
fuente
Yo iría por
La lógica es que
>=
incluye la fecha de inicio completa y<
excluye la fecha de finalización, por lo que agregamos una unidad a la fecha de finalización. Esto puede adaptarse por meses, por ejemplo:fuente
fuente
Puedes probar este SQL
fuente
Realmente todas las fechas sql deben estar en formato aaaa-MM-dd para obtener los resultados más precisos.
fuente
fuente
es mejor escribir de esta manera:
fuente
fuente