25. oktober 2007 - 20:01Der er
7 kommentarer og 1 løsning
dato vises kun max 20 år frem
Jeg har følgende værdi i mysql: 2040-10-25 00:00:00 som bliver trukket ud med en UNIX_TIMESTAMP()
når jeg så senere echo(date(d-m-Y,$datoframysql)) så skriver den 01-01-1970 hvis jeg ændrer datoen i mysql til 2037-10-25 00:00:00 så vises den korrekte dato
Altså ser det ud til at 'noget' ikke kan klare mere en 30 år frem i tiden?
I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
Fra PHP-manualen: The valid range of a timestamp is typically from Fri, 13 Dec 1901 20:45:54 GMT to Tue, 19 Jan 2038 03:14:07 GMT. (These are the dates that correspond to the minimum and maximum values for a 32-bit signed integer). However, before PHP 5.1 this range was limited from 01-01-1970 to 19-01-2038 on some systems (e.g. Windows).
Men generelt er det også langt bedre at gemme tiden som en INT i databasen. Det er nemmere at trække ud, det er nemmere at omdanne til en pæn dato, det er nemmere at sammenligne og udregne fra. Egentlig har jeg aldrig fattet hvorfor folk bruger timestamps.
Men jeg har lige testet - selvom int datatypen kan indeholde langt mere end de ca. 2 milliarder sekunder som år 2038 svarer til, så kan man ikke parse dem med date() funktionen :(
timestamps er nemmere at bruge når det handler om datoer. Det skyldes at hvis du vil behandle et timestamp, f.eks. hvis du kun hente dagens navn ud er det meget nemmere med timestamp.
Men korrekt viperine, et timestamp går kun til ca. år 2038. Dette skyldes et levn fra den gang operativsystemer blevet opfundet, hvor der ikke var plads til at regne med at for store tal, max 32 bit. Man valgte netop også dengang at startdatoen skulle være 1.1.1970.
Ikke for at stjæle emnet her, men jeg er nysgerrig hvis der er noget jeg har overset. Hvordan er det nemmere kun at tage dagen fra et timestamp, end bare at skrive date("l", $time) på en int?
Det er date() funktionen og timestamp der ikke kan, men date() funktionen er problemet, for ellers ville du bare kunne bruge en int. En BIGINT datetype i MySQL ville kunne tælle til år 292471210647.
Jeg ved faktisk ikke hvordan man løser problemet, når date() funktionen ikke kan. Sorry.
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.