webForumDet fria alternativet

Tidsformat i databas

12 svar · 364 visningar · startad av lillebror

lillebrorMedlem sedan apr. 20041 687 inlägg
#1

Vilket tidsformat är mest fördelaktigt att använda vid lagring i en MySQL-databas när man arbetar med PHP. Jag har sett att UNIXSTAMP florerat i en del trådar. I min databas använder jag mig av DATETIME. Har sett att det finns något som heter TIMESTAMP likaså. Vilket är mest användbart och lättast att jobba med? Synpunkter? :)

K@llenMedlem sedan mars 20032 654 inlägg
#2

Jag använder nästan uteslutande datetime. Tycker det är enklast att arbeta med trots att man får skicka in värdet manuellt varje gång. Fördelen med timestamp är att det (första timestampet i listan) uppdateras automatiskt när posten uppdateras.

lillebrorMedlem sedan apr. 20041 687 inlägg
#3

K@llen skrev:

Tycker det är enklast att arbeta med trots att man får skicka in värdet manuellt varje gång.

Hur menar du nu? :) Att du skickar in datumet med exempelvis now();?

Hur formaterar man enklast tiden och datumet som man får ut från databasen för informationen innehåller ju allt från vilket år till sekund det är?

K@llenMedlem sedan mars 20032 654 inlägg
#4

lillebror skrev:

Hur menar du nu? :) Att du skickar in datumet med exempelvis now();?

Ja, precis. :)

Vilken datatyp menar du i din andra fråga?

lillebrorMedlem sedan apr. 20041 687 inlägg
#5

K@llen skrev:

Vilken datatyp menar du i din andra fråga?

Jag syftade på datatypen datetime i MySQL :)

K@llenMedlem sedan mars 20032 654 inlägg
#6

lillebror skrev:

K@llen skrev:

Vilken datatyp menar du i din andra fråga?

Jag syftade på datatypen datetime i MySQL :)

Det beror på hur du vill presentera resultatet. :)

lillebrorMedlem sedan apr. 20041 687 inlägg
#7

Så här kan det ju se ut när man får ut tid och datum ur databasen: 2005-06-17 12:00:00

Nu skulle jag vilja formatera det så att jag tar bort sekundrarna på slutet! :) Det kanske går att göra på ett smidigt sätt redan i SQL-frågan?

K@llenMedlem sedan mars 20032 654 inlägg
#8
$datetime = "2005-06-17 12:00:00";
echo substr($datetime, 0, 16 );
K@llenMedlem sedan mars 20032 654 inlägg
#9

Direkt i SQL-frågan kan du använda LEFT(). Exempel från mysql.com

LEFT(str,len)

Returns the leftmost len characters from the string str.

mysql> SELECT LEFT('foobarbar', 5);
-> 'fooba'

lillebrorMedlem sedan apr. 20041 687 inlägg
#10

K@llen skrev:

$datetime = "2005-06-17 12:00:00";
echo substr($datetime, 0, 16 );

Detta var ju en mycket smidig lösning! Fungerade bra. Är det bättre rent semantiskt eller hur man nu ska uttrycka sig att göra denna formatering redan i SQL-satsen istället för i presentationsskiktet? :OO

K@llenMedlem sedan mars 20032 654 inlägg
#11

lillebror skrev:

K@llen skrev:

$datetime = "2005-06-17 12:00:00";
echo substr($datetime, 0, 16 );

Detta var ju en mycket smidig lösning! Fungerade bra. Är det bättre rent semantiskt eller hur man nu ska uttrycka sig att göra denna formatering redan i SQL-satsen istället för i presentationsskiktet? :OO

Ska du inte använda sekunderna är det onödigt att hämta ut den datan. Ta med andra ord bort dem redan i din SQL-fråga. :)

lillebrorMedlem sedan apr. 20041 687 inlägg
#12

Roger that! Tack för hjälpen! :e

MatteMedlem sedan aug. 20002 970 inlägg
#13

Själv brukar jag använda mig av DATE_FORMAT:

SELECT DATE_FORMAT(datum, '%Y-%m-%d') AS datum FROM tabell

Läs mer om DATE_FORMAT här.

128 ms totalt · 3 externa anrop · cache AV · v20260731051352-full.56cc9887
0 ms — hämta statistik (cache)
0 ms — hämta forumlista (cache)
126 ms — hämta tråd, inlägg och bilagor (db)