sql >> Database >  >> RDS >> Mysql

MySQL-datumnotatie – wat u moet weten

MySQL is afgeleid van 'My' - de dochter van de medeoprichter en SQL- Structured Query Language. Het is een open-source type relationeel databasebeheersysteem. Dit relationele databasesysteem helpt bij het ordenen van gegevens in herkenbare tabellen, waardoor structurele relaties tussen verschillende gegevenssets mogelijk worden.

MySQL-datum is een van de tijdelijke gegevenstypen waarmee gegevenswaarden naast andere gegevenstypen kunnen worden beheerd, zoals numerieke gegevenstypen, tekenreeksgegevenstypen, booleaanse gegevenstypen, datum en tijd en ruimtelijke gegevenstypen.

De functie DATE_FORMAT() wordt in MySQL gebruikt om de datum op te maken met de opgegeven opmaakwaarde. Als er bijvoorbeeld een datum is opgegeven, zal de functie deze formatteren met betrekking tot de gespecificeerde parameters.

MySQL-syntaxis voor datumnotatie

DATE_FORMAT(date, format)

De syntaxisfunctie hierboven accepteert twee parameters zoals hieronder getoond:

  • datum - Het specificeert de datum die moet worden opgemaakt
  • format – Het definieert het formaat dat moet worden gebruikt om de datum op te maken

Hieronder vindt u een lijst met indelingen waarmee u vertrouwd moet raken als u met de datumfunctie werkt.

  • %a – dit formaat geeft de naam van de weekdag weer. het is beperkt van zondag tot zaterdag.
  • %b – dit formaatsymbool toont de naam van de maand. het is beperkt van januari tot december.
  • %c – dit formaatsymbool geeft de numerieke naam van de maand aan. het is beperkt van 0 tot 12
  • %D – dit formaatsymbool toont de numerieke waarde van de dag van de maand gevolgd door een achtervoegsel zoals 1e of 2e.
  • %e – dit formaatsymbool toont de numerieke waarde van de dag van de maand. het is beperkt van 0 tot 31
  • %f – dit formaatsymbool toont microseconden. het is beperkt van 000000 tot 999999.
  • %H – dit formaatsymbool geeft het uur aan. Het is beperkt van 00 tot 23.
  • %i – dit formaatsymbool toont de minuten. het is beperkt van 00 tot 59.
  • %j – dit formaatsymbool toont de dag van het jaar. het is beperkt van 001 tot 366.
  • %M – dit formaatsymbool geeft de naam van de maand aan. het is beperkt van januari tot december
  • %p – dit formaatsymbool toont PM of AM
  • %S – dit formaatsymbool geeft seconden aan. het is beperkt van 00 tot 59
  • %U – dit formaatsymbool toont weekdagen waarbij zondag de eerste dag is. Het is beperkt van 00 tot 53.
  • %W – dit formaatsymbool toont de weekdagen van zondag tot zaterdag
  • %Y – dit formaatsymbool toont de numerieke waarde van het jaar als een getal van 4 cijfers

De bovenstaande formaten retourneren een geformatteerde datum.

Voorbeeld 1: 

Om het jaar vanaf de huidige datum te extraheren of te tonen, voeren we de volgende opdrachtregel uit:

SELECT DATE_FORMAT("2021-09-25", "%Y");
Uitvoer:
Voorbeeld 2:

Extraheer de maandnaam van een bepaalde datum, zoals hieronder weergegeven:

2021-09-25

SELECT DATE_FORMAT("2021-09-25", "%M");
Uitvoer:
Voorbeeld 3:

Haal uren en minuten uit de onderstaande datum:

2021-09-25

SELECT DATE_FORMAT("2021-09-25 10:20:23", "%H %i");
Uitvoer:
Voorbeeld 4: 

Haal de dag van de maand numeriek uit de onderstaande datum:

2021-09-25

SELECT DATE_FORMAT("2021-09-25", "%D");
Uitvoer:
Voorbeeld 5:

Pak de maand, de dag en het jaar uit de hierin vermelde datum:

2021-09-25

SELECT DATE_FORMAT("2021-09-25", "%M %d %Y");
Uitvoer:

MySQL-datum gebruikt het formaat; jjjj-mm-dd om een ​​gegevenswaarde op te slaan, en dit formaat is meestal vast zonder toestemming om het ook maar te wijzigen. Voor de opslagvereisten van MySQL, om een ​​enkele datumwaarde op te slaan, zou het ongeveer 3 bytes gebruiken en heeft het een datumwaarde variërend van 1000-01-01 tot 9999-12-31. Daarom is een gebruiker die een datumbereik buiten deze parameters moet opslaan alleen mogelijk via gehele getallen. Dit proces is echter behoorlijk belastend en u moet drie kolommen maken, één voor het jaar, één voor de maand en de laatste voor de dag.

Dit wordt vaak niet aanbevolen om in de meeste gevallen te proberen als u de datumnotatie wilt wijzigen. Door de 'strikte modus' uit te schakelen, wordt elke ongeldige datum omgezet in de 'datumwaarde nul'. Een ongeldige datum zou in dit geval niet de standaard MySQL-datumnotatie volgen, bijvoorbeeld 2020-01-24. Dit zou ook de noodzaak creëren om 'opgeslagen functies' te ontwikkelen, die de nieuw gecreëerde datumfuncties van MySQL zouden reproduceren.

MySQL-datumwaarden met jaren van 2 cijfers

MySQL accepteert alleen jaarwaarden van twee cijfers onder de volgende voorwaarden:

  1. Jaarwaarden tussen 00-69 worden geconverteerd naar 2000-2069
  2. Jaarwaarden tussen 70-79 worden geconverteerd naar 1970-1999

Het is echter raadzaam om het gebruik van datumwaarden met twee cijfers te vermijden, omdat dit dubbelzinnig is.
Hier is een voorbeeld. Er wordt een tabel gemaakt met de naam 'people' en heeft kolommen met 'datatypes':

CREATE TABLE IF NOT EXISTS people ( 
JOB_ID integer NOT NULL UNIQUE PRIMARY KEY, 
JOB_TITLE varchar(35) NOT NULL DEFAULT ' ', 
MIN_SALARY decimal(6,0) DEFAULT 8000, 
MAX_SALARY decimal(6,0) DEFAULT NULL
)ENGINE=InnoDB;

De volgende functie zal 'een rij invoegen' in de tabel 'mensen':

INSERT INTO people(JOB_ID, JOB_TITLE, MIN_SALARY, MAX_SALARY)
VALUES('5', 'Foss', '2000', '2000');

Nu 'query the data' uit de 'people' tabel

SELECT * FROM people;

Na het uitvoeren van de bovenstaande commando's, is het nu mogelijk om de 2-cijferige jaarnotatieoptie te gebruiken om gegevens in de tabel 'mensen' in te voegen:

INSERT INTO people(JOB_ID,JOB_TITLE,MIN_SALARY,MAX_SALARY,BIRTH)
VALUES('6', 'FOSSLINUX', '200', '2000', '01-09-01');

'01' is gebruikt in de eerste rij als het jaar, vallend tussen de (bereik 00-69). MySQL converteert het vervolgens naar 2001, terwijl op de tweede rij het gebruik van '84' ​​binnen het bereik (70-99) valt en MySQL converteert het naar 1984.

MySQL-datumfuncties

MySQL biedt en gebruikt vaak verschillende datumfuncties, waardoor gebruikers hun gegevens effectiever en sneller kunnen manipuleren.
Als u bijvoorbeeld de functie 'NU( )' gebruikt, kunt u de huidige datum en tijd ophalen:

SELECT NOW( );

Om alleen het datumgedeelte van een 'DATETIME' te krijgen, gebruikt u alleen de functie 'DATE( )':

SELECT DATE(NOW( ) );

Gebruik CURDATE ( ):

. om de huidige systeemdatum te krijgen
SELECT CURDATE();

De functie 'DATE_FORMAT' kan worden gebruikt om de datumwaarde naar dit formaat te formatteren; mm/dd/jjjj. Het gebruikt het datumformaatpatroon van %m/%d/%Y

SELECT DATE_FORMAT('2021-09-25 22:23:00', '%W %D %M %Y');

Als u het aantal dagen tussen twee datumwaarden wilt berekenen, gebruikt u de functie 'DATEDIFF':

mysql> SELECT DATEDIFF('2020-09-25', '2021-09-25') days;

Het gebruik van de 'DATE_ADD'-functie helpt iemand om meerdere jaren, maanden, weken of dagen toe te voegen:

SELECT DATE_ADD('2021-09-25', INTERVAL 31 DAY);

De functie 'DATE_SUB' kan ook worden gebruikt om een ​​datuminterval af te trekken:

SELECT DATE_SUB("2021-09-25", INTERVAL 10 DAY);

Als u de corresponderende functie gebruikt in termen van datum, maand, kwartaal en jaar, kunt u de exacte dag, maand, enzovoort krijgen voor een datumwaarde zoals hieronder weergegeven:

SELECT DAY(‘2000-12-31’) day,
MONTH( ‘2000-12-31’) month
QUARTER(‘2000-12-31’) quarter,
YEAR(‘2000-12-31’) year

Day ǀ month ǀ quarter ǀ year ǀ
31 ǀ 12 ǀ 4 ǀ 2000ǀ

Wekelijkse informatie over gerelateerde functies is toegankelijk via:

SELECT
WEEKDAY(‘2000-12-31’) weekday,
WEEK( ‘2000-12-31’) week,
WEEKOFTHEYEAR(‘2000-12-31’) weekofyear;

weekday ǀ week ǀ weekofyear ǀ
6 ǀ 53 ǀ 52 ǀ

De weekfunctie retourneert altijd een weeknummer met een op nul gebaseerde index. U moet een tweede argument doorgeven of een '0' doorgeven om te voorkomen dat dit gebeurt. Als u '1' doorgeeft, wordt het weeknummer '1-geïndexeerd' geretourneerd.

WEEKDAY(‘2000-12-31’) weekday,
WEEK( ‘2000-12-31’, 1) week,
WEEKOFTHEYEAR(‘2000-12-31’) weekofyear;

weekday ǀ week ǀ weekofyear ǀ
6 ǀ 52 ǀ 52 ǀ

Conclusie

Dit is een korte artikelhandleiding die het onderwerp MySQL-datumnotatie behandelt. We hopen dat alle aspecten waarmee u vertrouwd wilde raken over MySQL-datumnotaties zijn behandeld. Vergeet niet om een ​​duim omhoog te geven via het opmerkingengedeelte als je het artikel nuttig vindt.


  1. Afsluiten van PostgreSQLs Command Line Utility (psql)

  2. Fix "FOUT:elke UNION-query moet hetzelfde aantal kolommen hebben" in PostgreSQL

  3. Doe mee aan vier tabellen met LEFT JOIN zonder duplicaten

  4. EXP() Voorbeelden in SQL Server