que - generar rango de fechas sql
Seleccionar datos del rango de fechas entre dos fechas (18)
Aquí hay una consulta para encontrar todas las ventas de productos que se estaban ejecutando durante el mes de agosto
- Encontrar Product_sales que estuvieron activos durante el mes de agosto
- Incluye todo lo que comenzó antes de finales de agosto
- Excluya todo lo que terminó antes del 1 de agosto
También agrega una declaración de caso para validar la consulta
SELECT start_date,
end_date,
CASE
WHEN start_date <= ''2015-08-31'' THEN ''true''
ELSE ''false''
END AS started_before_end_of_month,
CASE
WHEN NOT end_date <= ''2015-08-01'' THEN ''true''
ELSE ''false''
END AS did_not_end_before_begining_of_month
FROM product_sales
WHERE start_date <= ''2015-08-31''
AND end_date >= ''2015-08-01''
ORDER BY start_date;
Tengo una tabla llamada Product_Sales
y contiene datos como este
Product_ID | Sold_by | Qty | From_date | To_date
-----------+---------+-----+------------+-----------
3 | 12 | 7 | 2013-01-05 | 2013-01-07
6 | 22 | 14 | 2013-01-06 | 2013-01-10
8 | 11 | 9 | 2013-02-05 | 2013-02-11
Ahora, ¿cuál es la consulta si quiero seleccionar datos de ventas entre dos fechas de un rango de fechas?
Por ejemplo, quiero seleccionar datos de ventas de 2013-01-03
a 2013-01-09
.
Debe comparar las fechas en sql al igual que compara los valores numéricos,
SELECT * FROM Product_sales
WHERE From_date >= ''2013-01-01'' AND To_date <= ''2013-01-20''
Esta consulta lo ayudará a:
select *
from XXXX
where datepart(YYYY,create_date)>=2013
and DATEPART(YYYY,create_date)<=2014
Este código funcionará bien:
Controlador:
$this->load->model("YourModelName");
$data [''query''] = $this->YourModelName->get_report();
Modelo:
public function get_report()
{
$query = $this->db->query("SELECT *
FROM reservation WHERE arvdate <= ''2016-7-20'' AND dptrdate >= ''2016-10-25'' ");
return $query;
}
donde ''arvdate'' y ''dptrdate'' son dos fechas en la base de datos y ''reservation'' es el nombre de la tabla.
Ver:
<?php
echo $query->num_rows();
?>
Este código es para devolver el número de filas. Para devolver los datos de la tabla, utilice
$query->rows();
return $row->table_column_name;
Esto es fácil, use esta consulta para encontrar datos seleccionados del intervalo de fechas entre dos fechas
select * from tabblename WHERE (datecolumn BETWEEN ''2018-04-01'' AND ''2018-04-5'')
Esto funciona en SQL_Server_2008 R2
Select *
from Product_sales
where From_date
between ''2013-01-03'' and ''2013-01-09''
Intenta seguir la consulta para obtener fechas entre el rango:
SELECT *
FROM Product_sales
WHERE From_date >= ''2013-01-03'' AND
To_date <= ''2013-01-09''
Por favor, inténtalo:
DECLARE @FrmDt DATETIME, @ToDt DATETIME
SELECT @FrmDt=''2013-01-03'', @ToDt=''2013-01-09''
SELECT *
FROM Product_sales
WHERE (@FrmDt BETWEEN From_date AND To_date) OR
(@ToDt BETWEEN From_date AND To_date)
Solo mis 2 centavos, creo que usar el formato "dd-MMM-aaaa" es lo más seguro ya que el servidor de db sabrá lo que quiere independientemente de la configuración regional en el servidor. De lo contrario, podría encontrarse con problemas en un servidor que tiene su configuración regional de fecha como aaaa-dd-mm (por cualquier motivo)
Así:
SELECT * FROM Product_sales
WHERE From_date >= ''03-Jan-2013''
AND To_date <= ''09-Jan-2013''
Siempre me ha funcionado bien ;-)
Verifique esta consulta, creé esta consulta para verificar si la fecha de entrada en la vuelta con cualquier fecha de reserva
SELECT * FROM tbl_ReservedRooms
WHERE NOT (''@checkindate'' NOT BETWEEN fromdate AND todate
AND ''@checkoutdate'' NOT BETWEEN fromdate AND todate)
esto retrotraerá los detalles que se superponen, para obtener los detalles que no se superponen y luego eliminar el ''NO'' de la consulta
esto es fácil, use esta consulta para encontrar lo que quiere.
select * from Product_Sales where From_date<=''2018-04-11'' and To_date>=''2018-04-11''
También puedes intentar usar los siguientes fragmentos:
select * from Product_sales
where From_date >= ''2013-01-03'' and game_date <= ''2013-01-09''
Como puede ver, hay dos maneras de hacer las cosas:
- alista todas las opciones aceptables
- excluir todas las opciones incorrectas
Obviamente, la segunda forma es mucho más simple (solo dos casos contra cuatro).
Su SQL se verá así:
SELECT * FROM Product_sales
WHERE NOT (From_date > @RangeTill OR To_date < @RangeFrom)
SELECT *
FROM Product_sales
WHERE (
From_date >= ''2013-08-19''
AND To_date <= ''2013-08-23''
)
OR (
To_date >= ''2013-08-19''
AND From_date <= ''2013-08-23''
)
SELECT * FROM Product_sales
WHERE From_date between ''2013-01-03''
AND ''2013-01-09''
SELECT * from Product_sales where
(From_date BETWEEN ''2013-01-03''AND ''2013-01-09'') OR
(To_date BETWEEN ''2013-01-03'' AND ''2013-01-09'') OR
(From_date <= ''2013-01-03'' AND To_date >= ''2013-01-09'')
Tienes que cubrir todas las posibilidades. From_Date o To_Date podrían estar entre su rango de fechas o las fechas de registro podrían cubrir todo el rango.
Si uno de From_date
o To_date
está entre las fechas, o From_date
es menor que la fecha de inicio y To_date
es mayor que la fecha de finalización; entonces esta fila debería ser devuelta.
SELECT NULL
FROM HRMTable hm(NOLOCK)
WHERE hm.EmployeeID = 123
AND (
(
CAST(@Fromdate AS date) BETWEEN CAST(hm.FromDate AS date)
AND CAST(hm.ToDate AS date)
)
OR (
CAST(@Todate AS date) BETWEEN CAST(hm.FromDate AS date)
AND CAST(hm.ToDate AS date)
)
)
)
select *
from table
where
( (table.EndDate > ''2013-01-05'') and (table.StartDate < ''2013-01-07'' ) )