sql >> Database teknologi >  >> Database Tools >> phpMyAdmin

Hvordan kan jeg lave en kolonne, der gemmer den tid, den række blev oprettet i mysql?

Redigeret svar

Hvis du vil bruge en almindelig TIMESTAMP feltet i MySQL, skal du først oprette feltet.

ALTER TABLE  `YourTable` ADD  `LastAccessed` TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ;

Når du har opsat feltet, kan du lade det være. Når du indsætter et registreringspas null som værdien, og den vil som standard være den aktuelle tid. Når du opdaterer posten, vil tiden blive justeret.

For at hente tiden fra TIMESTAMP skal du køre din valgforespørgsel og få dine resultater. Til illustrative formål vil dette se nogenlunde sådan ud:

//Integrate this into your existing code
$result = mysqli_query($connection, "SELECT LastAccessed FROM YourTable"); //get only the time field for this example
$row = mysqli_fetch_array($result);
$time = new DateTime($row['LastAccessed']); //The constructor accepts the time information as an argument
echo $time->format("H:i:s"); //This is your time information.

Da du har en TIMESTAMP feltet nu, vil databasen ikke kun tage ansvaret for at opdatere den med det korrekte tidspunkt, men du kan altid ændre $time->format() metodes argument for at producere en streng med tidsdata på en række forskellige måder.

Tidsstemplet bliver abstraheret, og din applikation får fleksibilitet.

Win-Win, ikke?

Originalt svar

Opret en char(8) kolonne i MySQL og send den derefter output fra et opkald til:

date("H:i:s");

Selvom det ville være optimalt at bruge et tidsstempelfelt i MySQL, i betragtning af at du kan få det opdateret, når posten interageres med. Du har ikke at bruge hele tidsstemplet.




  1. Kan ikke oprette hovednøgle til masterdatabase i azure sql

  2. MySql - WAMP - Kæmpe tabel er meget langsom (20 millioner rækker)

  3. Kan jeg indstille en MySQL-begivenhedsplan ved hjælp af phpMyAdmin?

  4. Eksporter Firebird-database til sql