sql >> Database >  >> RDS >> MariaDB

Hoe leeftijd te berekenen in MariaDB

In MariaDB kunt u de TIMESTAMPDIFF() . gebruiken functie om de leeftijd van een persoon te berekenen (of de leeftijd van wat dan ook).

TIMESTAMPDIFF() is een ingebouwde datum- en tijdfunctie die het verschil tussen twee datum- of datetime-expressies retourneert. Overgaand YEAR als het eerste argument, de geboortedatum als het tweede argument en de huidige datum als het derde, geeft de leeftijd in jaren terug.

Voorbeeld

Hier is een voorbeeld om te demonstreren:

SELECT TIMESTAMPDIFF(YEAR, '1985-02-15', CURDATE()) AS Age;

Resultaat:

+------+
| Age  |
+------+
|   36 |
+------+

Hier gebruiken we CURDATE() om de huidige datum terug te geven.

Databasevoorbeeld

Hier is een voorbeeld dat de leeftijd van huisdieren in een database retourneert en vervolgens de resultaten sorteert op leeftijd in aflopende volgorde:

SELECT
    PetName,
    DOB,
    CURDATE(),
    TIMESTAMPDIFF(YEAR, DOB, CURDATE()) AS Age 
FROM Pets
ORDER BY Age DESC;

Resultaat:

+---------+------------+------------+------+
| PetName | DOB        | CURDATE()  | Age  |
+---------+------------+------------+------+
| Scratch | 2018-10-01 | 2021-05-30 |    2 |
| Fetch   | 2019-08-16 | 2021-05-30 |    1 |
| Wag     | 2020-03-15 | 2021-05-30 |    1 |
| Fluffy  | 2020-11-20 | 2021-05-30 |    0 |
| Tweet   | 2020-11-28 | 2021-05-30 |    0 |
| Fluffy  | 2020-09-17 | 2021-05-30 |    0 |
| Bark    | NULL       | 2021-05-30 | NULL |
| Meow    | NULL       | 2021-05-30 | NULL |
+---------+------------+------------+------+

Huisdieren die jonger zijn dan een jaar hebben een leeftijd van 0 .

Waar de geboortedatum kolom is null , het resultaat is null .


  1. Is het mogelijk om `SqlDbType.Structured` te gebruiken om tabelwaardeparameters in NHibernate door te geven?

  2. Een database maken in SQL Server (T-SQL)

  3. Opgeslagen procedure in Oracle-voorbeeld met IN OUT-parameter

  4. Waarom zijn geaggregeerde functies niet toegestaan ​​in de where-clausule?