sql >> Database teknologi >  >> RDS >> Mysql

Brug af et gemt datofelt til at beregne et felt, der beregner det aktuelle antal dage, der er gået

Du vil måske gerne læse om CURDATE() og DATEDIFF() funktioner (og andre funktioner i MySQL, som kan være nyttige for dig i fremtiden) her:https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_datediff

SELECT *, DATEDIFF(CURDATE(), mydatefield) AS days_since
FROM MyTable;

Hvis du vil have dette indbygget i tabellen, kan du bruge en VIEW:

CREATE VIEW MyView AS
  SELECT *, DATEDIFF(CURDATE(), mydatefield) AS days_since
  FROM MyTable;

MySQL 5.7 understøtter genererede kolonner hvor du kan tilføje en virtuel kolonne baseret på et udtryk, men det virker ikke i dette tilfælde, fordi det ikke er tilladt at bruge en ikke-deterministisk funktion som CURDATE() i sådanne udtryk.

ALTER TABLE MyTable ADD COLUMN days_since INT AS (DATEDIFF(CURDATE(), mydatefield));
ERROR 3102 (HY000): Expression of generated column 'days_since' contains a disallowed function.



  1. MySQL trunkerer sammenkædet resultat af en GROUP_CONCAT-funktion

  2. Skal jeg deaktivere MySQL strict mode?

  3. MariaDB Advarsel:'[email beskyttet]' har begge ... Adgangskoden vil blive ignoreret

  4. Hvad er forskellen mellem VARCHAR(255) og TINYTEXT strengtyper i MySQL?