Les fonctions SQL de manipulation de date (2024)

15.Les fonctions SQL

CURDATE()MySQL
Retourne la date courante au format AAAA-MM-JJ (ou AAAAMMJJ si le résultat est converti en entier)
Les fonctions SQL de manipulation de date (1)
  • Utilisez plutôt CURRENT_DATE qui est plus standard.
CURDATE() CURDATE()+0
2001-07-29 20010729
SELECT CURDATE(),CURDATE()+0
CURRENT_DATEMySQL|PostgreSQL
Retourne la date courante au format AAAA-MM-JJ (ou AAAAMMJJ si le résultat est converti en entier)
Les fonctions SQL de manipulation de date (2)
  • MySQL accepte aussi bien CURRENT_DATE (en tant que variable) que CURRENT_DATE() (en tant que fonction) mais la conversion en entier ne peut s'appliquer qu'à la fonction. Le comportement de PostgreSQL sur ce dernier point n'a pas été vérifié.
CURRENT_DATE CURRENT_DATE()+0
2001-07-29 20010729
SELECT CURRENT_DATE,CURRENT_DATE()+0
CURRENT_TIMEMySQL|PostgreSQL
Retourne l'heure courante au format HH:MM:SS (ou HHMMSS si le résultat est converti en entier)
Les fonctions SQL de manipulation de date (3)
  • REM: MySQL accepte aussi bien CURRENT_TIME (en tant que variable) que CURRENT_TIME() (en tant que fonction) mais la conversion en entier ne peut s'appliquer qu'à la fonction. Le comportement de PostgreSQL sur ce dernier point n'a pas été vérifié.
CURRENT_TIME CURRENT_TIME()+0
18:20:07 182007
SELECT CURRENT_TIME,CURRENT_TIME()+0
CURRENT_TIMESTAMPMySQL|PostgreSQL
Retourne la date courante au format AAAA-MM-JJ HH:MM:SS (ou AAAAMMJJHHMMSS si le résultat est converti en entier)
Les fonctions SQL de manipulation de date (4)
  • MySQL accepte aussi bien CURRENT_TIMESTAMP (en tant que variable) que CURRENT_TIMESTAMP() (en tant que fonction) mais la conversion en entier ne peut s'appliquer qu'à la fonction. Le comportement de PostgreSQL sur ce dernier point n'a pas été vérifié.
CURRENT_TIMESTAMP CURRENT_TIMESTAMP()+0
2001-07-29 18:20:07 20010729182007
SELECT CURRENT_DATE,CURRENT_DATE()+0
CURTIME() (MySQL)MySQL
Retourne l'heure courante au format HH:MM:SS (ou HHMMSS si le résultat est converti en entier)
Les fonctions SQL de manipulation de date (5)
  • Utilisez plutôt CURRENT_TIME qui est plus standard.
CURTIME() CURTIME()+0
18:20:07 182007
SELECT CURTIME(),CURTIME()+0
MOD(nombre1,nombre2)MySQL|Oracle|PostgreSQL
Retourne le reste de la division de "nombre1" par "nombre2"
NOW()MySQL
Retourne la date courante au format AAAA-MM-JJ HH:MM:SS (ou AAAAMMJJHHMMSS si le résultat est converti en entier)
Les fonctions SQL de manipulation de date (6)
  • Utilisez plutôt CURRENT_TIMESTAMP qui est plus standard.
NOW() NOW()+0
2001-07-29 18:20:07 20010729182007
SELECT NOW(),NOW()+0
SQRT(nombre)MySQL|Oracle|PostgreSQL
Retourne la racine carrée de "nombre"
Les fonctions SQL de manipulation de date (7)
  • Avec PostgreSQL cette dernière DOIT être de type "float"
SYSDATE()MySQL
Retourne la date courante au format AAAA-MM-JJ HH:MM:SS (ou AAAAMMJJHHMMSS si le résultat est converti en entier)
Les fonctions SQL de manipulation de date (8)
  • Utilisez plutôt CURRENT_TIMESTAMP qui est plus standard.
SYSDATE() SYSDATE()+0
2001-07-29 18:20:07 20010729182007
SELECT SYSDATE(),SYSDATE()+0
UNIX_TIMESTAMP()MySQL
Retourne le nombre de secondes écoulées depuis le 1er Janvier 1970
UNIX_TIMESTAMP()
996423607
SELECT UNIX_TIMESTAMP()
ADDDATE(date, INTERVAL interval)MySQL
Ajoute un interval de temps à "date".
monchamp ADDDATE(monchamp, INTERVAL 1 SECOND)
2001-01-01 20:00:00 2001-01-01 20:00:01
SELECT monchamp, ADDDATE(monchamp, INTERVAL 1 SECOND) FROM matable
monchamp ADDDATE(monchamp, INTERVAL 1 MINUTE)
2001-01-01 20:00:00 2001-01-01 20:01:00
SELECT monchamp, ADDDATE(monchamp, INTERVAL 1 MINUTE) FROM matable
monchamp ADDDATE(monchamp, INTERVAL 1 HOUR)
2001-01-01 20:00:00 2001-01-01 21:00:00
SELECT monchamp, ADDDATE(monchamp, INTERVAL 1 HOUR) FROM matable
monchamp ADDDATE(monchamp, INTERVAL 1 DAY)
2001-01-01 20:00:00 2001-01-02 20:00:00
SELECT monchamp, ADDDATE(monchamp, INTERVAL 1 DAY) FROM matable
monchamp ADDDATE(monchamp, INTERVAL 1 MONTH)
2001-01-01 20:00:00 2001-02-01 20:00:00
SELECT monchamp, ADDDATE(monchamp, INTERVAL 1 MONTH) FROM matable
monchamp ADDDATE(monchamp, INTERVAL 1 YEAR)
2001-01-01 20:00:00 2002-01-01 20:00:00
SELECT monchamp, ADDDATE(monchamp, INTERVAL 1 YEAR) FROM matable
monchamp ADDDATE(monchamp, INTERVAL "01:02" MINUTE_SECOND)
2001-01-01 20:00:00 2001-01-01 20:01:02
SELECT monchamp, ADDDATE(monchamp, INTERVAL "01:02" MINUTE_SECOND) FROM matable
monchamp ADDDATE(monchamp, INTERVAL "01:02" HOUR_MINUTE)
2001-01-01 20:00:00 2001-01-01 21:02:00
SELECT monchamp, ADDDATE(monchamp, INTERVAL "01:02" HOUR_MINUTE) FROM matable
monchamp ADDDATE(monchamp, INTERVAL "01 02" DAY_HOUR)
2001-01-01 20:00:00 2001-01-02 22:00:00
SELECT monchamp, ADDDATE(monchamp, INTERVAL "01 02" DAY_HOUR) FROM matable
monchamp ADDDATE(monchamp, INTERVAL "01-02" YEAR_MONTH)
2001-01-01 20:00:00 2002-03-01 20:00:00
SELECT monchamp, ADDDATE(monchamp, INTERVAL "01-02" YEAR_MONTH) FROM matable
monchamp ADDDATE(monchamp, INTERVAL "01:02:03" HOUR_SECOND)
2001-01-01 20:00:00 2001-01-01 21:02:03
SELECT monchamp, ADDDATE(monchamp, INTERVAL "01:02:03" HOUR_SECOND) FROM matable
monchamp ADDDATE(monchamp, INTERVAL "01 02:03" DAY_MINUTE)
2001-01-01 20:00:00 2001-01-02 22:03:00
SELECT monchamp, ADDDATE(monchamp, INTERVAL "01 02:03" DAY_MINUTE) FROM matable
monchamp ADDDATE(monchamp, INTERVAL "01 02:03:04" DAY_SECOND)
2001-01-01 20:00:00 2001-01-02 22:03:04
SELECT monchamp,ADDDATE(monchamp, INTERVAL "01 02:03:04" DAY_SECOND) FROM matable
DATE_ADD(date, INTERVAL interval)MySQL
Cf. ADDDATE(date, INTERVAL interval)

DAYOFMONTH(date) (MySQL)

retourne le numéro du jour par rapport au mois de "date"

DAYOFWEEK(date) (MySQL)

retourne le numéro du jour par rapport à la semaine de "date" (commence à Dimanche=1)

DAYOFYEAR(date) (MySQL)

retourne le numéro du jour par rapport à l"année de "date"

DATE_FORMAT(date,format) (MySQL)

retourne la date "date" au format spécifié par "format"

DATE_SUB(date,INTERVAL interval) (MySQL)

Ote un interval de temps à "date"

FROM_DAYS(entier) (MySQL)

retourne la date correspondant à "entier" jours depuis l'an 0

FROM_UNIXTIME(entier) (MySQL)

retourne la date "entier" exprimée en secondes depuis le 1er Janvier 1970 au format AAAA-MM-JJ HH:MM:SS (ou AAAAMMJJHHMMSS s'il est converti en entier)

FROM_UNIXTIME(entier,format) (MySQL)

retourne la date "entier" exprimée en secondes depuis le 1er Janvier 1970 au format spécifié par "format"

HOUR(heure) (MySQL)

retourne l'heure (0-23) de "heure"

MINUTE(heure) (MySQL)

retourne le champ minute de "heure"

MONTH(date) (MySQL)

retourne le mois de "date"

MONTHNAME(date) (MySQL)

retourne le mois de "date" en toutes lettres

PERIOD_ADD(periode,entier) (MySQL)

ajoute "entier" mois à "periode", où période represente un mois au format AAMM ou AAAAMM, retourne une periode au format AAAAMM

PERIOD_DIFF(periode1,periode2) (MySQL)

retourne le nombre de mois entre "periode1" et "periode2"

QUARTER(date) (MySQL)

retourne le numéro du trimestre de "date"

SEC_TO_TIME(entier) (MySQL)

retourne l'heure "entier" exprimée en seconde au format HH:MM:SS (ou HHMMSS s'il est converti en entier)

SECOND(heure) (MySQL)

retourne le champ seconde de "heure"

SUBDATE(date,INTERVAL interval) (MySQL)

Ote un interval de temps à "date"

TIME_FORMAT(heure,format) (MySQL)

retourne l'heure "heure" au format spécifié par "format"

TIME_TO_SEC(heure) (MySQL)

converti l'heure en secondes

TO_DAYS(date) (MySQL)

converti la date en nombre de jours depuis l'année 0

UNIX_TIMESTAMP(date) (MySQL)

Retourne le nombre de secondes entre le 1er Janvier 1970 et "date"

UNIX_TIMESTAMP('2001-01-01 20:00:00')
978375600
SELECT UNIX_TIMESTAMP('2001-01-01 20:00:00')

WEEK(date) (MySQL)

retourne le numéro de la semaine par rapport à l'année de "date"

WEEK(date,entier) (MySQL)

retourne le numéro de la semaine par rapport à l'année de "date", si entier=0 la semaine débute le Dimanche, si entier=1 la semaine débute le Lundi

WEEKDAY(date) (MySQL)

retourne le numéro du jour par rapport à la semaine de "date" (commence à Lundi=0)

YEAR(date) (MySQL)

retourne l'année de "date"

YEARWEEK(date) (MySQL)

retourne l'année et le numéro de la semaine par rapport à l'année de "date"

YEARWEEK(date,entier) (MySQL)

retourne l'année et le numéro de la semaine par rapport à l'année de "date", si entier=0 la semaine débute le Dimanche, si entier=1 la semaine débute le Lundi

As an expert in SQL, particularly in MySQL and PostgreSQL, I've extensively worked with various date and time functions, leveraging them in database management, querying, and data manipulation tasks. The concepts and functions you've mentioned in the provided article are integral to handling date and time-related operations within SQL databases.

Let's delve into the comprehensive breakdown of the SQL functions and concepts covered in the article:

  1. CURDATE() / CURRENT_DATE:

    • Description: Returns the current date in YYYY-MM-DD format.
    • Usage: CURDATE(), CURRENT_DATE
  2. CURRENT_TIME / CURTIME():

    • Description: Returns the current time in HH:MM:SS format.
    • Usage: CURRENT_TIME, CURTIME()
  3. CURRENT_TIMESTAMP / NOW():

    • Description: Returns the current date and time in YYYY-MM-DD HH:MM:SS format.
    • Usage: CURRENT_TIMESTAMP, NOW()
  4. UNIX_TIMESTAMP():

    • Description: Retrieves the number of seconds elapsed since January 1, 1970.
    • Usage: UNIX_TIMESTAMP()
  5. ADDDATE() / DATE_ADD():

    • Description: Adds a specified time interval to a date.
    • Usage: ADDDATE(date, INTERVAL value time_unit), DATE_ADD(date, INTERVAL value time_unit)
  6. DATE_SUB() / SUBDATE():

    • Description: Subtracts a specified time interval from a date.
    • Usage: DATE_SUB(date, INTERVAL value time_unit), SUBDATE(date, INTERVAL value time_unit)
  7. DAYOFMONTH() / DAYOFWEEK() / DAYOFYEAR():

    • Description: Returns the day within a month, week, or year respectively.
    • Usage: DAYOFMONTH(date), DAYOFWEEK(date), DAYOFYEAR(date)
  8. DATE_FORMAT():

    • Description: Formats a date as specified in the format argument.
    • Usage: DATE_FORMAT(date, format)
  9. MONTH() / MONTHNAME() / YEAR() / QUARTER():

    • Description: Extracts the month, month name, year, or quarter from a date.
    • Usage: MONTH(date), MONTHNAME(date), YEAR(date), QUARTER(date)
  10. TIME_FORMAT() / HOUR() / MINUTE() / SECOND():

    • Description: Extracts or formats time-related elements from a given time.
    • Usage: TIME_FORMAT(time, format), HOUR(time), MINUTE(time), SECOND(time)
  11. FROM_DAYS() / TO_DAYS():

    • Description: Converts between days and a date.
    • Usage: FROM_DAYS(value), TO_DAYS(date)
  12. FROM_UNIXTIME() / UNIX_TIMESTAMP():

    • Description: Converts between Unix timestamps and dates.
    • Usage: FROM_UNIXTIME(value, format), UNIX_TIMESTAMP(date)
  13. WEEK() / WEEKDAY() / YEARWEEK():

    • Description: Extracts or calculates week-related information from a date.
    • Usage: WEEK(date), WEEKDAY(date), YEARWEEK(date)
  14. PERIOD_ADD() / PERIOD_DIFF():

    • Description: Adds or calculates the difference in months between periods.
    • Usage: PERIOD_ADD(period, value), PERIOD_DIFF(period1, period2)
  15. SEC_TO_TIME() / TIME_TO_SEC():

    • Description: Converts between seconds and time.
    • Usage: SEC_TO_TIME(value), TIME_TO_SEC(time)

These functions and concepts are fundamental in SQL for managing, manipulating, and extracting date and time-related information from databases. Understanding their usage and application can significantly enhance data querying and analysis capabilities within SQL environments.

Les fonctions SQL de manipulation de date (2024)
Top Articles
Latest Posts
Article information

Author: Amb. Frankie Simonis

Last Updated:

Views: 6228

Rating: 4.6 / 5 (76 voted)

Reviews: 91% of readers found this page helpful

Author information

Name: Amb. Frankie Simonis

Birthday: 1998-02-19

Address: 64841 Delmar Isle, North Wiley, OR 74073

Phone: +17844167847676

Job: Forward IT Agent

Hobby: LARPing, Kitesurfing, Sewing, Digital arts, Sand art, Gardening, Dance

Introduction: My name is Amb. Frankie Simonis, I am a hilarious, enchanting, energetic, cooperative, innocent, cute, joyous person who loves writing and wants to share my knowledge and understanding with you.