webForumDet fria alternativet

Tidsformat i databas

PHP

12 svar · 364 visningar · startad av lillebror

Medlem sedan apr. 20041 597 inlägg
Frågan#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? :)

Medlem sedan mars 20032 667 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.

Medlem sedan apr. 20041 597 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?

Medlem sedan mars 20032 667 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?

Medlem sedan apr. 20041 597 inlägg
#5

K@llen skrev:

Vilken datatyp menar du i din andra fråga?

Jag syftade på datatypen datetime i MySQL :)

Medlem sedan mars 20032 667 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. :)

Medlem sedan apr. 20041 597 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?

Medlem sedan mars 20032 667 inlägg
#8
$datetime = "2005-06-17 12:00:00";
echo substr($datetime, 0, 16 );
Medlem sedan mars 20032 667 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'

Medlem sedan apr. 20041 597 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

Medlem sedan mars 20032 667 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. :)

Medlem sedan apr. 20041 597 inlägg
#12

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

Medlem sedan aug. 20002 975 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.

258 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)