SQL Server - Ayuda con Datetime

 
Vista:
sin imagen de perfil

Ayuda con Datetime

Publicado por Cristian (2 intervenciones) el 28/06/2017 01:04:49
Buenas tardes chicos, la verdad soy principiante en ésto de las Bases De Datos, pero no había tenido problemas (Por qué nunca había trabajado con fechas y horas)

El punto es que en una base de Datos que cree es de Aviones y én esta misma tengo una Tabla de Origenes en donde tengo lo siguiente:

1
2
3
4
5
CREATE TABLE Origen(
	Id_Origen int identity(1,1) primary key,
	Id_Ciudad int not null,
	Fecha datetime
	FOREIGN KEY (Id_Ciudad) REFERENCES Ciudad(Id_ciudad))

El punto es que la consulta que tengo que hacer que me muestre una lista pero solo del año 2012 y solo los que viajaron antes de las 12:00 ( 00:00:01 a 11:59:59)

éstos son los datos que tengo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
INSERT INTO Origen(Id_Ciudad,Fecha) VALUES (1,'2012-03-02 09:00:00')*
INSERT INTO Origen(Id_Ciudad,Fecha) VALUES (1,'2012-03-02 10:00:00')*
INSERT INTO Origen(Id_Ciudad,Fecha) VALUES (2,'2012-03-02 09:00:00')*
INSERT INTO Origen(Id_Ciudad,Fecha) VALUES (2,'2012-03-02 10:00:00')*
INSERT INTO Origen(Id_Ciudad,Fecha) VALUES (3,'2012-03-02 11:00:00')*
INSERT INTO Origen(Id_Ciudad,Fecha) VALUES (3,'2012-03-02 12:00:00')
INSERT INTO Origen(Id_Ciudad,Fecha) VALUES (4,'2012-03-02 13:00:00')
INSERT INTO Origen(Id_Ciudad,Fecha) VALUES (4,'2012-03-02 14:00:00')
INSERT INTO Origen(Id_Ciudad,Fecha) VALUES (5,'2012-03-02 10:00:00')*
INSERT INTO Origen(Id_Ciudad,Fecha) VALUES (5,'2012-03-02 11:00:00')*
INSERT INTO Origen(Id_Ciudad,Fecha) VALUES (6,'2012-03-02 11:00:00')*
INSERT INTO Origen(Id_Ciudad,Fecha) VALUES (6,'2012-03-02 12:00:00')
INSERT INTO Origen(Id_Ciudad,Fecha) VALUES (7,'2012-03-02 13:00:00')
INSERT INTO Origen(Id_Ciudad,Fecha) VALUES (7,'2012-03-02 14:00:00')
INSERT INTO Origen(Id_Ciudad,Fecha) VALUES (8,'2012-03-02 10:00:00')*
INSERT INTO Origen(Id_Ciudad,Fecha) VALUES (8,'2012-03-02 11:00:00')*

Por lo que sólo debería mostrarme los que tienen asterisco, pero al dar ésta consulta me da todos los datos:
1
2
3
4
5
6
SELECT V.Id_Vuelo as Numero_Vuelo, count(T.Id_Tripulacion) as Núm_Trip
FROM Vuelo V, Tripulacion T, Origen O
WHERE O.Fecha BETWEEN '20120101 00:00:00:001' AND '20121231 11:59:59:000'
and T.Id_Tripulacion = V.Id_Tripulacion
and V.Id_Origen = O.Id_Origen
GROUP BY V.Id_Vuelo

Realmente no sé si la condición en éste punto de Fecha(Que está en negritas) esté bien declarada.

Agradecería mucho su ayuda.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Ayuda con Datetime

Publicado por Isaias (4558 intervenciones) el 28/06/2017 01:22:18
En lugar de BETWEEN utiliza >= o <=

1
2
3
4
5
6
7
8
9
10
11
SELECT V.Id_Vuelo as Numero_Vuelo, count(T.Id_Tripulacion) as Núm_Trip
 
FROM Vuelo V, Tripulacion T, Origen O
 
WHERE O.Fecha >= '20120101 00:00:00:001' AND O.Fecha <= '20121231 11:59:59:000'
 
and T.Id_Tripulacion = V.Id_Tripulacion
 
and V.Id_Origen = O.Id_Origen
 
GROUP BY V.Id_VueloO.Fecha
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Ayuda con Datetime

Publicado por Cristian (2 intervenciones) el 28/06/2017 01:42:46
Muchísimas Gracias Isaias!

Por tu pronta respuesta me funcionó tal cuál lo pusiste :)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Ayuda con Datetime

Publicado por Isaias (4558 intervenciones) el 28/06/2017 18:08:34
Las FECHAS o campos de tipo FECHA, siempre (todos) los motores de base de datos, las guardan en formato NUMERICO, es por eso que sse deben filtrar con >= o <=, sera mucho mas eficiente.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar