Avatar billede eikhorsholm Nybegynder
09. juni 2005 - 22:45 Der er 12 kommentarer og
1 løsning

Opdater timestamp i række.

Hvorledes kan jeg opdatere en række i min tabel med et timestamp.
Har prøvet noget ala:
UPDATE tabel SET tid = CURRENT_TIMESTAMP()

Men det virker som om, den skriver DATETIME-format i stedet. Jeg skal have antal sekunder siden 1970 gemt. Ikke datoen i formatet YYYY-MM-DD HH:MM:SS.
Avatar billede eikhorsholm Nybegynder
09. juni 2005 - 22:46 #1
Formatetet i DB'en er selvfølgelig timestamp.
Avatar billede erikjacobsen Ekspert
09. juni 2005 - 23:01 #2
Brug typen int, ikke timestamp.
Avatar billede erikjacobsen Ekspert
09. juni 2005 - 23:02 #3
Og så selvfølgelig

  UPDATE tabel SET tid = unix_timestamp()
Avatar billede eikhorsholm Nybegynder
09. juni 2005 - 23:07 #4
Hvorfor skal det ikke være typen timestamp. Er det netop ikke sekunder siden 1970?
Og hvor stort skal mit int være så, det kan jo blive størrere og størrere med tiden.
Avatar billede erikjacobsen Ekspert
09. juni 2005 - 23:32 #5
Et timestamp er noget andet end du tror. Feltet opdateres automatisk ved hver ændring i rækken, og kan bruges til at se om en række har ændret sig efter man har læst den, og skal til at skrive tilbage til den.

En timestamp er 32 bit, så en INT er nok. Dog UNSIGNED - det glemte jeg. Og så en gang i 2036 sådan ca. vil det holde op med at virke. Men det vil et pænt antal millioner andre systemer også - det bliver værre end Y2K.
Avatar billede arne_v Ekspert
09. juni 2005 - 23:33 #6
et TIMESTAMP felt er et DATETIME felt som bliver automatisk opdateret når
række bliver opdateret
Avatar billede eikhorsholm Nybegynder
09. juni 2005 - 23:38 #7
erikjacobsen --> Lækkert. Laver du ikke et svar?
Jeg har lavet det om til int og unsigned. Nu siger den at det er et felt af typen int(10). Vil dette blive til int(11) hvis det er nødvendigt?
Avatar billede erikjacobsen Ekspert
09. juni 2005 - 23:43 #8
INT(11) er at foretrække, men der er nu ikke mange steder man tager sig af tallet - du kunne risikere at hvis du ville skrive tallet ud, så bliver det vist med 10 cifre som udgangspunkt i stedet for 11. Det kunne give lidt rod i opstillingen. Men nu er det
ikke et felt du selv vil udskrive, så endnu mere ligemeget. Min egen huskeregel er at skrive 11 for en sikkerheds skyld (sikke en masse ord....)

Jeg samler slet ikke på point, tak.
Avatar billede erikjacobsen Ekspert
09. juni 2005 - 23:44 #9
Nå ja, et UNSIGNED felt er kun 10 tegn langt (max ca 4 mia). Så du er på rette vej ;)
Avatar billede erikjacobsen Ekspert
09. juni 2005 - 23:47 #10
Nej hov, nu blander jeg vist nogle ting sammen. Det er faktisk et tal med fortegn, rent formelt, og når man når til godt 2 mia sekunder siden 1970 er man i 2036. Ingen ved hvad der så sker. Måske vedtager med at lave det om til unsigned - og så er du på forkant yderligere godt 35 år. Mange systemer vil stadig gå sort...eller blå....
Avatar billede erikjacobsen Ekspert
09. juni 2005 - 23:48 #11
Sorry, yderligere ca 65 år.
Avatar billede eikhorsholm Nybegynder
15. juni 2005 - 22:52 #12
øhm, erikjakobsen --> Laver du ikk' lige et svar ;-)
Avatar billede eikhorsholm Nybegynder
18. juni 2005 - 13:27 #13
Hmm, lukker for spørgsmålet. Tak for alle svar!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester