webForumDet fria alternativet

Plocka ut tid/datum i timestamp-format

13 svar · 485 visningar · startad av nitro2k01

nitro2k01Medlem sedan aug. 20039 342 inlägg
#1

Jag lagrar tid och datum i en databas i timestamp-format. Dessvärre gör det att strängen man får ut från databasen har detta format: 20050126152808. Hur ska jag gå tillväga för att få ut tiden i ett mer läsvänligt format? Jag skulle även vilja plocka ut bara följande: dag, månad, timme, minut.
Jag antar att det finns någon funktion i språket för detta.

QimenMedlem sedan juni 20015 009 inlägg
#2
$variabel = "20050126152808";
$sec = substr($variabel, -2);
$min = substr($variabel, -4, 2);
$tim = substr($variabel, -6, 2);
$dag = substr($variabel, -8, 2);
$man = substr($variabel, -10, 2);

http://se2.php.net/substr :)

nitro2k01Medlem sedan aug. 20039 342 inlägg
#3

Tja, det funkar väl, men jag håller tråden öppen ett litet tag till om någon har en funktion speciellt anpassad för detta.

QimenMedlem sedan juni 20015 009 inlägg
#4

Hade du haft ett skiljetecken mellan varje del hade man kunnat köra explode, men nu finns inte det. Ska kolla lite om det går att lösa på annat sätt. :)

nitro2k01Medlem sedan aug. 20039 342 inlägg
#5

Jag tänker på nåt i stil med:

$tiden=date("Y-m-d H:i:s");

Som dock bara verkar funka på det klockslag som är just nu.

MatteMedlem sedan aug. 20002 975 inlägg
#6

Det går att använda DATE_FORMAT också, åtminstone om du använder MySQL:

SELECT DATE_FORMAT(datum, '%Y-%m-%d %H:%i:%s') AS dat_formed FROM tabell

En annan variant är att plocka ut det som ett unix_timestamp, för att sedan köra date()-funktionen mot resultatet:

SELECT UNIX_TIMESTAMP(datum) AS unix_date FROM tabell
QimenMedlem sedan juni 20015 009 inlägg
#7

Men plockar man ut det så ur databasen får man det ändå i formen xxxx-xx-xx xx:xx:xx vilket innebär att man måste splitta upp det på något sätt om man vill få ut bara en viss del. Eller finns den en fin funktion för det med? Den lär jag ha missat isf. :)

nitro2k01Medlem sedan aug. 20039 342 inlägg
#8

Börjar närma sig. Jag använder följande kod för att plocka ut data till en array som jag går igenom:

mysql_query('SELECT * FROM shout ORDER BY ID DESC');

Går detta att kombinera med metoden ovan? (Mattes metod)

MatteMedlem sedan aug. 20002 975 inlägg
#9

Qimen skrev:

Men plockar man ut det så ur databasen får man det ändå i formen xxxx-xx-xx xx:xx:xx vilket innebär att man måste splitta upp det på något sätt om man vill få ut bara en viss del. Eller finns den en fin funktion för det med? Den lär jag ha missat isf. :)

Som faller är beskrivet tidigare i tråden så är nog det andra alternativet, att plocka ut det som unix_timestamp, att föredra eftersom det ska tas ut flera olika saker. Görs då lämpligtvis med date.

MatteMedlem sedan aug. 20002 975 inlägg
#10

nitro2k01 skrev:

Börjar närma sig. Jag använder följande kod för att plocka ut data till en array som jag går igenom:

mysql_query('SELECT * FROM shout ORDER BY ID DESC');

Går detta att kombinera med metoden ovan? (Mattes metod)

Det går med stor sannolikhet.
Vad vill du få ut, och från vilken kolumn?

SkarreMedlem sedan apr. 20012 427 inlägg
#11
SELECT *, DATE_FORMAT(datum, '%Y-%m-%d %H:%i:%s') AS dat_formed
FROM shout s
ORDER BY ID DESC

Bör funka.

nitro2k01Medlem sedan aug. 20039 342 inlägg
#12

Som det är nu får jag ju ut allt i den raden till en array, som du säkert förstår. Det som skulle vara bäst var om det gick att säga med sql-syntax "Hämta alla element, utom times som ska hämtas med DATE_FORMAT"

men om det hjälper så har tabellen detta format: **`id`, `name`, `message`, `mail`, `ip`, `times`, `host`, `priv`**Där allt är strängar (Utom times som sagt, som är timestamp, och id som är en int)

MatteMedlem sedan aug. 20002 975 inlägg
#13

Som Skarre skrivit det får du ut `dat_formed` som en sträng.
Men jag förstår inte vad det skulle gjort för skillnad om det varit ett tal. Det blir ett element i arrayen i vilket fall.

nitro2k01Medlem sedan aug. 20039 342 inlägg
#14

Matte skrev:

Som Skarre skrivit det får du ut `dat_formed` som en sträng.
Men jag förstår inte vad det skulle gjort för skillnad om det varit ett tal. Det blir ett element i arrayen i vilket fall.

Skillnaden är att jag kan få ut det på vilket format jag vill OCH ha det som element i en array.

139 ms totalt · 3 externa anrop · v20260731065814-full.beb2e261
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)