¿Cómo consulto el campo de la base de datos DateTime dentro de un rango determinado?
Estoy usando SQL SERVER 2005
Código de error a continuación
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, intervalo de tiempo de 10 minutos.
Actualmente, SQL regresa con sintaxis incorrecta cerca de '12'. "
where date = 1/12/2011
por ejemplo, parecerá que funciona, pero en realidad divida el 1/12/2011 y obtenga cero, y luego trate cero como el valor de fecha y hora mínimo posible.Respuestas:
Te perdiste el signo de comillas simples:
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'
fuente
Necesita comillas alrededor de la cadena que está tratando de hacer pasar como una fecha, y también puede 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 explícitamente cadenas en fechas mientras se especifica el formato:
Conversión de la cadena del servidor SQL a la fecha
fuente
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'}
fuente
Puede ejecutar el siguiente código
SELECT Time FROM [TableName] where DATEPART(YYYY,[Time])='2018' and DATEPART(MM,[Time])='06' and DATEPART(DD,[Time])='14
fuente
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, por favor escriba su tabla y publíquela aquí. esto nos ayudará a darle la respuesta correcta rápidamente.
fuente
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
fuente
Otros ya han dicho que los literales de fecha en SQL Server requieren estar entre comillas simples, pero quería agregar que puede resolver su problema de confusión mes / día de dos maneras (es decir, el problema donde 25 se considera el mes y 5 el día):
Utilice un explícito
Convert(datetime, 'datevalue', style)
where style es uno de los códigos de estilo numéricos, consulte Transmitir y convertir . El parámetro de estilo no solo sirve para convertir fechas en cadenas, sino también para determinar cómo se analizan las cadenas en fechas.Utilice un formato independiente de la región para las fechas almacenadas como cadenas. El uso que yo es 'hh aaaammdd: mm: ss', o considerar el formato ISO,
yyyy-mm-ddThh:mi:ss.mmm
. Según la experimentación, NO hay ninguna otra cadena de formato invariable en el idioma. (Aunque creo que puede incluir la zona horaria al final, consulte el enlace anterior).fuente
Abra el archivo de acceso al que está intentando exportar datos SQL. Elimine las consultas que estén allí. Cada vez que ejecuta el asistente de importación de SQL Server, incluso si falla, crea una consulta en la base de datos de Access que debe eliminarse antes de poder ejecutar nuevamente el asistente de exportación de SQL.
fuente