Les funcions de data i hora en SQL són essencials per treballar amb dades temporals. Aquestes funcions permeten manipular i formatar dates i hores, calcular diferències entre dates, i molt més. En aquest tema, explorarem les funcions més comunes de data i hora en SQL.

Continguts

Funcions de data i hora comunes

  1. CURRENT_DATE i CURRENT_TIME

  • CURRENT_DATE: Retorna la data actual.
  • CURRENT_TIME: Retorna l'hora actual.
SELECT CURRENT_DATE;
-- Resultat: 2023-10-05 (exemple)

SELECT CURRENT_TIME;
-- Resultat: 14:23:45 (exemple)

  1. NOW()

  • NOW(): Retorna la data i hora actuals.
SELECT NOW();
-- Resultat: 2023-10-05 14:23:45 (exemple)

  1. DATE()

  • DATE(expression): Extreu la part de la data d'una expressió de data i hora.
SELECT DATE('2023-10-05 14:23:45');
-- Resultat: 2023-10-05

  1. EXTRACT()

  • EXTRACT(part FROM date): Extreu una part específica d'una data (com l'any, mes, dia, hora, minut, segon).
SELECT EXTRACT(YEAR FROM '2023-10-05');
-- Resultat: 2023

SELECT EXTRACT(MONTH FROM '2023-10-05');
-- Resultat: 10

  1. DATE_ADD() i DATE_SUB()

  • DATE_ADD(date, INTERVAL value unit): Afegeix un interval a una data.
  • DATE_SUB(date, INTERVAL value unit): Resta un interval d'una data.
SELECT DATE_ADD('2023-10-05', INTERVAL 10 DAY);
-- Resultat: 2023-10-15

SELECT DATE_SUB('2023-10-05', INTERVAL 1 MONTH);
-- Resultat: 2023-09-05

  1. DATEDIFF()

  • DATEDIFF(date1, date2): Retorna la diferència en dies entre dues dates.
SELECT DATEDIFF('2023-10-05', '2023-09-05');
-- Resultat: 30

  1. TIMESTAMPDIFF()

  • TIMESTAMPDIFF(unit, datetime1, datetime2): Retorna la diferència entre dos timestamps en la unitat especificada (SECOND, MINUTE, HOUR, DAY, etc.).
SELECT TIMESTAMPDIFF(HOUR, '2023-10-05 14:00:00', '2023-10-05 16:00:00');
-- Resultat: 2

Exemples pràctics

Exemple 1: Calculant l'edat d'una persona

Suposem que tenim una taula persones amb una columna data_naixement. Volem calcular l'edat de cada persona.

SELECT nom, 
       data_naixement, 
       TIMESTAMPDIFF(YEAR, data_naixement, CURDATE()) AS edat
FROM persones;

Exemple 2: Filtrant registres per data

Suposem que tenim una taula comandes amb una columna data_comanda. Volem obtenir totes les comandes realitzades en els últims 30 dies.

SELECT *
FROM comandes
WHERE data_comanda >= DATE_SUB(CURDATE(), INTERVAL 30 DAY);

Exercicis pràctics

Exercici 1

Crea una consulta que mostri la data i hora actuals, així com la data d'aquí a 7 dies.

Exercici 2

Suposem que tens una taula events amb una columna data_event. Escriu una consulta que mostri tots els esdeveniments que es duran a terme en el mes actual.

Exercici 3

Crea una consulta que calculi la diferència en dies entre dues dates donades: '2023-01-01' i '2023-12-31'.

Solucions dels exercicis

Solució 1

SELECT NOW() AS data_hora_actual,
       DATE_ADD(CURDATE(), INTERVAL 7 DAY) AS data_dins_7_dies;

Solució 2

SELECT *
FROM events
WHERE EXTRACT(MONTH FROM data_event) = EXTRACT(MONTH FROM CURDATE())
  AND EXTRACT(YEAR FROM data_event) = EXTRACT(YEAR FROM CURDATE());

Solució 3

SELECT DATEDIFF('2023-12-31', '2023-01-01') AS dies_diferencia;

Conclusió

En aquest tema, hem explorat diverses funcions de data i hora en SQL que són essencials per treballar amb dades temporals. Hem vist com obtenir la data i hora actuals, extreure parts específiques d'una data, afegir i restar intervals de temps, i calcular diferències entre dates. Aquests coneixements són fonamentals per a qualsevol treball amb bases de dades que impliqui dades temporals. En el següent tema, explorarem les expressions condicionals en SQL.

Curs de SQL

Mòdul 1: Introducció a SQL

Mòdul 2: Consultes bàsiques de SQL

Mòdul 3: Treballar amb múltiples taules

Mòdul 4: Filtratge avançat de dades

Mòdul 5: Manipulació de dades

Mòdul 6: Funcions avançades de SQL

Mòdul 7: Subconsultes i consultes niades

Mòdul 8: Índexs i optimització del rendiment

Mòdul 9: Transaccions i concurrència

Mòdul 10: Temes avançats

Mòdul 11: SQL en la pràctica

Mòdul 12: Projecte final

© Copyright 2024. Tots els drets reservats