PHP arendamiseks MySQL-is DATETIME ja TIMESTAMP valimine

PHP

MySQL-i kuupäeva ja kellaaja andmetüüpide mõistmine

MySQL-iga töötamisel võib kuupäeva ja kellaaja väärtuste salvestamiseks sobiva andmetüübi valimine oluliselt mõjutada teie andmebaasi jõudlust ja funktsionaalsust. Selles artiklis uuritakse erinevusi andmetüüpide DATETIME ja TIMESTAMP vahel ning antakse soovitusi nende kasutamiseks PHP serveripoolses keskkonnas.

Nende erinevuste mõistmine aitab teil teha oma andmebaasi skeemi kujundamisel teadlikke otsuseid. Uurime mõlema andmetüübi omadusi, arutame nende eeliseid ja piiranguid ning anname praktilisi nõuandeid õige valimiseks, lähtudes teie konkreetsetest vajadustest ja kasutusjuhtudest.

Käsk Kirjeldus
CREATE TABLE Loob andmebaasis uue tabeli määratud veergude ja piirangutega.
DATETIME Salvestab kuupäeva ja kellaaja väärtused ilma ajavööndita. Sobib ajalooliste andmete jaoks.
TIMESTAMP Salvestab kuupäeva ja kellaaja väärtused, teisendades need salvestamiseks UTC-ks ja taastamiseks kohalikuks kellaajaks.
AUTO_INCREMENT Loob automaatselt kordumatu numbri, kui tabelisse lisatakse uus kirje.
DEFAULT CURRENT_TIMESTAMP Määrab uue kirje loomisel välja TIMESTAMP vaikeväärtuseks praeguse kuupäeva ja kellaaja.
$conn->query($sql) Täidab päringu andmebaasi vastu. Kasutatakse nii andmete sisestamiseks kui ka otsimiseks.
$conn->fetch_assoc() Toob tulemuserea assotsiatiivse massiivina, kus veergude nimed on võtmed.

MySQL-i kuupäeva ja kellaaja väljade rakendamine

Pakutud skriptid näitavad, kuidas tõhusalt kasutada ja andmetüübid MySQL-is, kui töötate serveri poolel PHP-ga. Esimene skript loob MySQL-i tabeli nimega , mis sisaldab kahte kuupäeva ja kellaaja välja: event_date ja . The jaoks kasutatakse tüüpi sündmuse konkreetse kuupäeva ja kellaaja salvestamiseks ilma ajavööndit arvestamata, muutes selle ajalooliste andmete jaoks sobivaks. The TIMESTAMP jaoks kasutatakse tüüpi iga kirje loomise automaatseks jälgimiseks, teisendades aja salvestamisel UTC-aja ja hankimisel tagasi kohaliku aja järgi. See eristamine on ülioluline rakenduste jaoks, mis peavad arvestama ajavöönditega. Teine skript illustreerib, kuidas sisestada andmeid tabel PHP-ga. See loob ühenduse MySQL-i andmebaasiga, valmistab ette lause ja käivitab selle uue sündmusekirje lisamiseks. Ühendus andmebaasiga luuakse kasutades new mysqli() funktsioon ja päring täidetakse meetod. Skript sisaldab ka veakäsitlust, et anda tagasisidet, kui ühendus ebaõnnestub või päringus tekib probleem. See PHP-skript tagab, et kuupäeva ja kellaaja andmed on õigesti vormindatud ja sisestatud andmebaasi.

Kolmas skript hangib ja kuvab andmed failist laud. See loob uuesti ühenduse andmebaasiga, käivitab a päring kõigi kirjete toomiseks ja töötleb tulemusi. The funktsiooni kasutatakse iga rea ​​toomiseks assotsiatiivse massiivina, mis võimaldab hõlpsat juurdepääsu veeru väärtustele nende nimede järgi. Seejärel liigub skript läbi tulemuskomplekti, väljastades id, , , ja väljad iga kirje jaoks. See näitab, kuidas käsitleda ja kuvada mõlemasse salvestatud andmeid DATETIME ja vorminguid, tagades, et rakendus tõlgendab ja esitab ajaga seotud teavet õigesti.

Kasutades MySQL-is DATETIME ja TIMESTAMP

PHP ja MySQL: andmebaasiskeemi kujundamine

// Backend: Creating a MySQL Table with DATETIME and TIMESTAMP fields
CREATE TABLE events (
    id INT AUTO_INCREMENT PRIMARY KEY,
    event_name VARCHAR(100) NOT ,
    event_date DATETIME NOT ,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
// Explanation:
// 'event_date' uses DATETIME to store the date and time of the event.
// 'created_at' uses TIMESTAMP to automatically track the record creation time.

Andmete sisestamine MySQL-i tabelisse

PHP ja MySQL: andmete sisestamise skript

//php
// Backend: PHP Script to Insert Data into the MySQL Table
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "database_name";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
$event_name = "Sample Event";
$event_date = "2024-07-10 12:00:00";
$sql = "INSERT INTO events (event_name, event_date)
VALUES ('$event_name', '$event_date')";
if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
//

Andmete otsimine ja kuvamine

PHP ja MySQL: andmete toomine ja kuvamine

//php
// Backend: PHP Script to Retrieve and Display Data from MySQL Table
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT id, event_name, event_date, created_at FROM events";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        echo "id: " . $row["id"]. " - Name: " . $row["event_name"].
             " - Event Date: " . $row["event_date"].
             " - Created At: " . $row["created_at"]. "<br>";
    }
} else {
    echo "0 results";
}
$conn->close();
//

Valimine MySQL-is DATETIME ja TIMESTAMP vahel

Kui otsustate vahel ja MySQL-i andmetüüpide puhul on oluline arvestada nende ainulaadseid omadusi ja nende vastavust teie rakenduse nõuetega. The tüüp sobib ideaalselt kuupäevade ja kellaaegade salvestamiseks, mis on mõeldud eri ajavööndites järjepidevaks, näiteks ajaloolised kirjed või sündmuste kuupäevad, mis ei tohiks muutuda olenemata kasutaja asukohast. See on sellepärast, et DATETIME ei võta arvesse ajavööndeid; see salvestab sisestatud täpse kuupäeva ja kellaaja, muutes selle kasutamise lihtsaks, kuid potentsiaalselt problemaatiliseks, kui on vaja globaalset järjepidevust.

Teisest küljest, tüüp on loodud salvestama ajaväärtusi UTC suhtes, teisendades need hankimisel automaatselt serveri ajavööndiks. See teeb eriti kasulik muudatuste jälgimiseks, näiteks kirje loomise või värskendamise ajad, kuna see tagab järjepidevuse erinevates ajavööndites. Töötades koos , kasutades TIMESTAMP võib lihtsustada ajavööndite erinevuste haldamist, muutes kasutajatele täpse kohaliku kellaaja esitamise lihtsamaks. Kuid, on võrreldes aastaga piiratud ulatusega , toetavad ainult kuupäevi 1970–2038, mis võib olla pikaajaliste rakenduste puhul arvesse võetud.

  1. Mis on MySQL-i peamine erinevus DATETIME ja TIMESTAMP vahel?
  2. salvestab kuupäeva ja kellaaja sellisel kujul, kui see on salvestab selle UTC-vormingus ja teisendab selle serveri ajavööndiks.
  3. Millist andmetüüpi peaksin sündmuste kuupäevade salvestamiseks kasutama?
  4. on eelistatav sündmuste kuupäevade jaoks, kuna see säilitab ajavööndite järjepidevuse.
  5. Milline andmetüüp on parim kirje loomise aja jälgimiseks?
  6. on ideaalne loomisaegade jälgimiseks, kuna kasutab automaatselt praegust aega ja kohandub ajavöönditega.
  7. Kuidas MySQL käsitleb ajavööndeid TIMESTAMP-iga?
  8. MySQL poed väärtused UTC-s ja teisendab need hankimisel praeguseks ajavööndiks.
  9. Kas ma saan TIMESTAMP abil salvestada kuupäevi enne 1970. aastat?
  10. ei, toetab ainult kuupäevi vahemikus 1970–2038. Kasutage kuupäevade jaoks väljaspool seda vahemikku.
  11. Kas TIMESTAMP värskendatakse automaatselt kirje muudatuste korral?
  12. Jah, kui see on määratletud ja , TIMESTAMP värskendatakse automaatselt.
  13. Mis juhtub, kui sisestan vale kuupäeva väljale DATETIME?
  14. Kui kuupäev on kehtetu, lisab MySQL olenevalt SQL-režiimist '0000-00-00 00:00:00'.
  15. Kuidas tagada erinevate serverite ajasalvestuse järjepidevus?
  16. Kasutades tagab aja järjepidevuse, kuna teisendab kõik ajad UTC-sse.
  17. Kas ma saan kasutada funktsioone DATETIME ja TIMESTAMP?
  18. Jah, MySQL toimib nagu ja töötada mõlema andmetüübiga.
  19. Milline andmetüüp on salvestamisel tõhusam?
  20. on salvestustõhusam, kasutades 4 baiti võrreldes DATETIME 8 baidiga.

Viimased mõtted MySQL-i kuupäeva- ja kellaajatüüpide kohta

Kokkuvõtteks mõlemad ja andmetüüpidel on oma koht MySQL-i andmebaasikujunduses. on eelistatud ajalooliste kirjete jaoks või siis, kui ajavööndi ühtsus on ülioluline TIMESTAMP on kasulik muutuste jälgimiseks automaatse UTC teisendusega. Teie valik peaks vastama teie rakenduse konkreetsetele vajadustele, et tagada kuupäeva ja kellaaja täpne ja tõhus käsitlemine.