sql >> Database >  >> NoSQL >> MongoDB

Hoe u de dag, maand en jaar van een datum in SQL kunt krijgen

De meeste grote RDBMS'en hebben functies waarmee we de dag, de maand en het jaar kunnen extraheren uit datetime-waarden.

Sommige RDBMS'en bieden meerdere manieren om dit te doen, en andere zijn beperkter. Hieronder staan ​​voorbeelden van het extraheren van dag, maand en jaar uit datumwaarden in enkele van de meest populaire RDBMS'en.

MySQL

MySQL heeft verschillende functies die kunnen worden gebruikt om de dag, de maand en het jaar uit een datum te extraheren. Een daarvan is de EXTRACT() functie:

SELECT 
    EXTRACT(DAY FROM '2035-12-19') AS Day,
    EXTRACT(MONTH FROM '2035-12-19') AS Month,
    EXTRACT(YEAR FROM '2035-12-19') AS Year;

Resultaat:

+------+-------+------+
| Day  | Month | Year |
+------+-------+------+
|   19 |    12 | 2035 |
+------+-------+------+

In dit geval heb ik elk datumgedeelte naar zijn eigen veld geëxtraheerd.

Als u wilt dat alle datumdelen in hetzelfde veld worden geretourneerd, moet de DATE_FORMAT() functie kan dit voor u doen.

MySQL heeft ook een aantal functies die specifieke datumdelen van een datum retourneren, zoals DAY() , MONTH() , YEAR() , enz.

Zie Dag, maand en jaar retourneren in MySQL voor meer voorbeelden.

Oracle

Oracle heeft een TO_CHAR() functie die kan worden gebruikt om datumdelen in hun eigen velden of allemaal in een enkel veld te extraheren. Hier is een voorbeeld van het retourneren in afzonderlijke velden:

SELECT 
    TO_CHAR(DATE '2035-09-26', 'Day') AS Day,
    TO_CHAR(DATE '2035-09-26', 'DD') AS DD,
    TO_CHAR(DATE '2035-09-26', 'Month') AS Month,
    TO_CHAR(DATE '2035-09-26', 'YYYY') AS Year
FROM DUAL;

Resultaat:

         DAY    DD        MONTH    YEAR 
____________ _____ ____________ _______ 
Wednesday    26    September    2035    

Bekijk deze volledige lijst met datum/tijd-indelingselementen in Oracle voor een lijst met opmaakelementen die kunnen worden gebruikt om datum/tijd-waarden op te maken met deze functie.

Oracle heeft ook een EXTRACT() functie die werkt als de gelijknamige functie van MySQL.

SQL-server

SQL Server heeft een behoorlijk groot aantal functies die datumdelen zoals dag, maand en jaar kunnen retourneren.

De DATEPART() functie is speciaal ontworpen voor het retourneren van gespecificeerde delen van een datum:

DECLARE @date date = '2045-07-03'; 
SELECT 
    DATEPART(day, @date) AS DAY, 
    DATEPART(weekday, @date) AS WEEKDAY, 
    DATEPART(month, @date) AS MONTH, 
    DATEPART(year, @date) AS YEAR;

Resultaat:

+-------+-----------+---------+--------+
| DAY   | WEEKDAY   | MONTH   | YEAR   |
|-------+-----------+---------+--------|
| 3     | 2         | 7       | 2045   |
+-------+-----------+---------+--------+

Een vergelijkbare functie is DATENAME() , die dag- en maandnamen als een tekenreeks kan retourneren.

SQL Server heeft ook functies zoals DAY() , MONTH() , YEAR() , enz. die een specifiek datumgedeelte retourneren.

En laten we de FORMAT() . niet vergeten functie, wat perfect is als je alle datumdelen in hetzelfde veld wilt retourneren.

Zie 6 functies om de dag, maand en jaar van een datum in SQL Server te krijgen voor meer voorbeelden.

PostgreSQL

PostgreSQL heeft een paar functies die datumdelen van datums kunnen retourneren.

Hier is een voorbeeld van de DATE_PART() functie:

SELECT 
    DATE_PART('DAY', date '2035-10-30') AS "Day",
    DATE_PART('DOW', date '2035-10-30') AS "DOW",
    DATE_PART('DOY', date '2035-10-30') AS "DOY",
    DATE_PART('MONTH', date '2035-10-30') AS "Month",
    DATE_PART('YEAR', date '2035-10-30') AS "Year";

Resultaat:

 Day | DOW | DOY | Month | Year 
-----+-----+-----+-------+------
  30 |   2 | 303 |    10 | 2035

PostgreSQL heeft ook een EXTRACT() functie die in principe hetzelfde doet, behalve met een iets andere syntaxis.

En de TO_CHAR() functie kan worden gebruikt als u meerdere datumdelen in hetzelfde veld wilt retourneren.

SQLite

SQLite is beperkter als het gaat om datum- en tijdfuncties. U kunt echter nog steeds de STRFTIME() . gebruiken functie om de dag, maand en jaar uit een datum te halen:

SELECT STRFTIME('%d %m %Y', '2035-12-01');

Resultaat:

01 12 2035

In dit voorbeeld heb ik alle datumdelen in hetzelfde veld geretourneerd. Maar dit is niet per se vereist. Als u ze in verschillende velden wilt retourneren, kunt u STRFTIME() . aanroepen meerdere keren, elk met een ander formaatelement:

SELECT 
    strftime('%d', '2035-12-01') AS "Day",
    strftime('%m', '2035-12-01') AS "Month",
    strftime('%Y', '2035-12-01') AS "Year";

Resultaat:

Day  Month  Year
---  -----  ----
01   12     2035

MariaDB

MariaDB biedt een grote selectie van functies die de dag, maand en jaar kunnen retourneren vanuit een datetime-waarde.

Hier is een voorbeeld van de DATE_FORMAT() functie:

SELECT DATE_FORMAT('2023-07-25', '%W, %D %M %Y');

Resultaat:

+-------------------------------------------+
| DATE_FORMAT('2023-07-25', '%W, %D %M %Y') |
+-------------------------------------------+
| Tuesday, 25th July 2023                   |
+-------------------------------------------+

Met die functie kunnen we alle datumdelen in een enkel veld retourneren (hoewel dit niet verplicht is - je kunt net zo gemakkelijk elk datumdeel in een ander veld retourneren door DATE_FORMAT() aan te roepen meerdere keren, elke keer met een andere opmaakreeks).

En net als sommige anderen heeft MariaDB ook een EXTRACT() functie die een bepaald datumgedeelte extraheert.

En er is ook een groot aantal specifieke functies voor elk datumgedeelte, zoals DAY() , MONTH() , YEAR() , enz.

Zie 11 functies om de dag, maand en jaar van een datum in MariaDB te krijgen voor een volledig overzicht.


  1. Een database in MongoDB neerzetten vanaf de opdrachtregel

  2. Hoe herken ik een Redis-geheugenlek?

  3. Verzamelobject kan niet worden opgeroepen fout met PyMongo

  4. Open source-databases implementeren