2011-05-25 41 views
60

¿Cómo consulto el campo de la base de datos de fecha y hora dentro de un cierto rango?Pregunta simple de fecha y hora sql

estoy usando SQL Server 2005

Código de error por 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 para obtener filas dentro de un cierto intervalo de tiempo. Ejemplo, 10 minutos de rango de tiempo. .

retorno

Actualmente SQL con la sintaxis incorrecta cerca de '12'"

+2

La respuesta de clyc es correcta: debe agregar presupuestos.He cometido este error antes, porque si lo haces 'donde date = 1/12/2011' por ejemplo, * aparecerá * para funcionar, pero en realidad se divide 1/12/2011 y se obtiene cero, y luego se trata cero el valor de fecha y hora mínimo posible. –

Respuesta

74

Usted perdió inicio de sesión único cita:

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 AAAA-MM-DDThh ISO8601: mm: ss.nnn [Z], ya que éste 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' 
+0

No funciona tan bien Msg 242, nivel 16, estado 3, línea 1 La conversión de un tipo de datos char a un tipo de datos de fecha y hora dio como resultado un valor de fecha y hora fuera de rango. – ove

+0

@overule - intente utilizar el segundo ejemplo –

+0

@overule - también, asegúrese de que su columna tenga el tipo de fecha y hora. –

8

usted necesita comillas alrededor de la cadena que se está tratando de hacer pasar como una fecha, y también se puede utilizar de aquí :

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

Véase la respuesta a la siguiente pregunta de ejemplos sobre cómo convertir explícitamente cadenas de fechas y especificar el formato:

Sql Server string to date conversion

+0

Mismo error que el anterior. Msg 242, nivel 16, estado 3, línea 1 La conversión de un tipo de datos char a un tipo de datos de fecha y hora dio como resultado un valor de fecha y hora fuera de rango. Estoy realmente confundido. – ove

+0

oh, acabo de copiar su fecha, tiene 25/05 pero probablemente esté esperando el mes/fecha, así que cambie las dos opciones. Edité mi respuesta y la relacioné con una buena pregunta aquí en SO que muestra cómo convertir cadenas a fechas explícitamente – Milimetric

0
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, la escritura a cabo su mesa y publicarlo aquí. esto nos ayudará a obtener la respuesta correcta rápidamente.

1

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

  1. Utilice una explícita Convert(datetime, 'datevalue', style) donde el estilo es uno de los códigos numéricos de estilo, consulte Cast and Convert. 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. Utilice 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).

0
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 
6

Esto ha funcionado para mí, tanto en SQL Server 2005 y 2008:

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

abrir el archivo de acceso al que quiere exportar datos SQL para. 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.

Cuestiones relacionadas