versiones query sql sql-server sql-server-2005 tsql sql-server-2008

query - Consulta simple DateTime sql



sql server version query (8)

¿Cómo consulto el campo de la base de datos DateTime dentro de un cierto rango?

Estoy usando SQL SERVER 2005

Código de error debajo

SELECT * FROM TABLENAME WHERE DateTime >= 12/04/2011 12:00:00 AM AND DateTime <= 25/05/2011 3:53:04 AM

Tenga en cuenta que necesito obtener filas dentro de un cierto rango de tiempo. Ejemplo, 10 minutos de rango de tiempo.

Actualmente SQL devuelve con sintaxis incorrecta cerca de ''12''. "


Abra el archivo de acceso al que intenta exportar datos SQL. Eliminar cualquier consulta que esté allí. Cada vez que ejecuta el asistente de importación de SQL Server, incluso si falla, crea una consulta en el Access DB que debe eliminarse antes de poder ejecutar nuevamente el Asistente de exportación SQL.


Esto me ha funcionado tanto en SQL Server 2005 como en 2008:

SELECT * from TABLE WHERE FIELDNAME > {ts ''2013-02-01 15:00:00.001''} AND FIELDNAME < {ts ''2013-08-05 00:00:00.000''}


Necesitas cotizaciones alrededor de la cadena que intentas pasar como una fecha, y también puedes usar BETWEEN aquí:

SELECT * FROM TABLENAME WHERE DateTime BETWEEN ''04/12/2011 12:00:00 AM'' AND ''05/25/2011 3:53:04 AM''

Consulte la respuesta a la siguiente pregunta para ver ejemplos sobre cómo convertir cadenas a fechas explícitamente al especificar el formato:

Conversión de secuencia de servidor Sql a fecha


Otros ya han dicho que los literales de fecha en SQL Server requieren estar rodeados por comillas simples, pero quería agregar que puede resolver su problema de confusión de mes / día de dos maneras (es decir, el problema donde 25 se ve como el mes y 5 día):

  1. Use un Convert(datetime, ''datevalue'', style) explícito Convert(datetime, ''datevalue'', style) donde el estilo es uno de los códigos de estilo numéricos, vea Transmitir y Convertir . El parámetro de estilo no solo sirve para convertir fechas en cadenas, sino también para determinar cómo se procesan las cadenas en las fechas.

  2. Use un formato independiente de la región para las fechas almacenadas como cadenas. El que yo uso es ''aaaammdd hh: mm: ss'', o considere el formato ISO, yyyy-mm-ddThh:mi:ss.mmm . Basado en la experimentación, NO hay otra cadena de formato invariante en el lenguaje. (Aunque creo que puede incluir la zona horaria al final, consulte el enlace anterior).


Puede ejecutar código debajo

SELECT Time FROM [TableName] where DATEPART(YYYY,[Time])=''2018'' and DATEPART(MM,[Time])=''06'' and DATEPART(DD,[Time])=''14


Te perdiste el signo de comilla simple:

SELECT * FROM TABLENAME WHERE DateTime >= ''12/04/2011 12:00:00 AM'' AND DateTime <= ''25/05/2011 3:53:04 AM''

Además, se recomienda utilizar el formato ISO8601 AAAA-MM-DDThh: mm: ss.nnn [Z], ya que este no dependerá de la cultura local de su servidor.

SELECT * FROM TABLENAME WHERE DateTime >= ''2011-04-12T00:00:00.000'' AND DateTime <= ''2011-05-25T03:53:04.000''


SELECT * FROM TABLENAME WHERE [DateTime] >= ''2011-04-12 12:00:00 AM'' AND [DateTime] <= ''2011-05-25 3:35:04 AM''

Si esto no funciona, escriba su tabla y publíquela aquí. esto nos ayudará a obtener la respuesta correcta rápidamente.


select getdate() O/P ---- 2011-05-25 17:29:44.763 select convert(varchar(30),getdate(),131) >= ''12/04/2011 12:00:00 AM'' O/P --- 22/06/1432 5:29:44:763PM