Jump to content
php.lv forumi

Datumi PHP un MYSQL


tas_pats

Recommended Posts

Gribētu noskaidrot kā jūs rīkojaties ar datumu apstrādi glabāšanai mysql tabulās.

Kā labāk rīkoties konvertēt datumu PHP pusē uz mysql DATE vai DATETIME formātu, vai arī konvertāciju atstāt MYSQL ziņā izmantojot FROM_UNIXTIME funkciju, vai vienkārši glabājat UNIX TIMESTAMP vērtību kā int lauku. Varbūt ir vēl kāda interesanta metode. Kādas būtu katras metodes priekšrocības vai trūkumi? Kā jūsuprāt būtu rīkoties pareizāk ?

Link to comment
Share on other sites

Neglabā datubāzē liekus datus.

Ja Tev jāglabā tikai datums, tad glabā tikai datumu DATE (DATETIME ir laika vienībām).

Pieredze rāda, ka laba alternatīva ir pieglabāt datumu INT formaataa Ymd => 20090629 - rezultataa iegusti human readable datus ar kuriem vari veikt matematiskas darbibas un kārtošanu.. tas ir lidzigi ka timestamp, taču ietaupi vietu.

Link to comment
Share on other sites

Man jau šķiet ka jāglabā tā kā ir ērtāk konkrētajā situācijā. Es pats personīgi parasti glabāju datuma/laika vienības kā vienu no pieejamiem mysql datu tipiem (atkarīgs no situācijas). Timestampu pa tiešo parasti nesaglabāju, konvertēju to uz unix timestampu selektā, protams ja tas ir nepieciešams, ar mysql funkciju UNIX_TIMESTAMP, vēlāk jau kā vajag var saformatēt ar php funkciju date. Unix timestampu pa tiešo glabāt man ne visai patīk, tad nevar redzēt saprotamu datumu, ja jāskatās datubāzē pa tiešo. Tomēr kā jau teicu jālieto to, kas ir piemērotāks atbilstošai situācijai.

Link to comment
Share on other sites

Datumu iekš MySQL vislabāk ir glabāt laukā DATE, jo

a) MySQL to glabā maziņu

b) Iekš MySQL ir pieejams lērums funkciju darbībām ar datumiem un to intervāliem

 

Ja glabā datumu UN laiku, tad ir divi varianti:

a) DATETIME

+) Atbalsta vērtības, kuras ir mazākas par 1970. gada 1. janvāri, un lielākas par 2038. gada 19. janvāri

b) TIMESTAMP

+) Atbalsta laika zonas

+) Glabā datus tā, ka tie aizņem mazāk vietas, nekā DATETIME

+) Ir iespēja uzlikt defaulto vērtību "tagas" (DEFAULT CURRENT_TIMESTAMP), kā arī ieraksta izmaiņu gadījumā iespējams automātiski nomainīt lauka vērtību (ON UPDATE CURRENT_TIMESTAMP)

+) Ir mazliet ātrāks (iekšēji iekš MySQL)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...