webForumDet fria alternativet

Plocka ut med datumintervall

Databaser & SQL

17 svar · 259 visningar · startad av nkrantz

Medlem sedan apr. 2002830 inlägg
Frågan#1

Hallå!

Går följande att göra och hur gör man isf:

Jag har en tabell med id och ett timestamp på medlemmar. Jag skulle vilja räkna hur många medlemmar per dag som registeras. Alltså söka på intervallen mellan timestampsen.

// Nippe

Medlem sedan mars 20007 896 inlägg
#2

Vad använder du för DBMS?

Medlem sedan apr. 2002830 inlägg
#3

mySQL... timstampet är sparat som UNIXtimestamp...

Medlem sedan dec. 20003 887 inlägg
#4

Nu vet jag inte hur man formaterar DATE i MySQL, men det här fungerar bra i Access, så du kanske kan lösa formateringen själv?

SELECT Count(*)
FROM tabell
GROUP BY FormatDateTime(timestamp)

red. Jag hittade inget format i MySQL som heter UNIXTimestamp. Endast olika Timestamp. Timestamp(14) t.ex..

Medlem sedan mars 20007 896 inlägg
#5

Funktionen heter FROM_UNIXTIMESTAMP() i MySQL.

Testa:

SELET COUNT(*)
FROM tabell
GROUP BY FROM_UNIXTIMESTAMP(tabell.field, "%Y %M %D");
Medlem sedan apr. 2002830 inlägg
#6
SELECT COUNT(payment_id)
FROM tbl_payment
GROUP BY FROM_UNIXTIMESTAMP(tbl_payment.timestamp, "%Y %M %D");

Funkar inte, får inte heller något felmeddelande!

Vad kan detta bero på?

// Nippe

Medlem sedan mars 20007 896 inlägg
#7

Får du ett 0-värde eller ingen utskrift alls?

Medlem sedan apr. 2002830 inlägg
#8

Alltså, jag menar, jag får ett felmeddelande, men inget meddelande.. hm.. Så här menar jag (från phpMyAdmin)
Error
SQL-query:

SELECT COUNT(*)
FROM tbl_payment
GROUP BY FROM_UNIXTIME(tbl_payment.timestamp, "%Y %M %D");
MySQL said:

Å så säger MySQL inget.. lite dumt tycker jag!

// Nippe

Medlem sedan apr. 2002830 inlägg
#9

sorry... mitt fel.. så här menar jag att det blir:
Error
SQL-query:

SELECT COUNT(payment_id)
FROM tbl_payment
GROUP BY FROM_UNIXTIMESTAMP(tbl_payment.timestamp, "%Y %M %D");
MySQL said: You have an error in your SQL syntax near '(tbl_payment.timestamp, "%Y %M %D")' at line 3

Medlem sedan mars 20007 896 inlägg
#10

Ett nytt försök då, först konverterar vi ditt fält till typen DATE och gör sedan en DATE_FORMAT:

SELECT COUNT(payment_id)
FROM tbl_payment
GROUP BY DATE_FORMAT( CAST( tbl_payment.timestamp AS DATE ), "%Y %M %D" );
Medlem sedan apr. 2002830 inlägg
#11

Eh.. Kom på att fältet är egentligen ett varchar fält där ett timestampen sparas från PHP, kanske kan vara detta som är problemet?

Medlem sedan mars 20007 896 inlägg
#12

Ja, jag skrev fel förut. Det finns ingen FROM_UNIXTIMESTAMP, den heter FROM_UNIXTIME som du tydligen hade märkt enligt inlägget innan. :)

Medlem sedan mars 20007 896 inlägg
#13

Aha! Testa då med mitt CAST-exempel om fältet är VARCHAR.

Medlem sedan apr. 2002830 inlägg
#14

Nä du...

Error
SQL-query:

SELECT COUNT(payment_id)
FROM tbl_payment
GROUP BY DATE_FORMAT( CAST( tbl_payment.timestamp AS DATE ), "%Y %M %D" );
MySQL said: You have an error in your SQL syntax near '( tbl_payment.timestamp AS DATE ), "%Y %M %D" )' at line 3

Medlem sedan mars 20007 896 inlägg
#15

Då verkar det som att du använder en lite äldre MySQL-version? CAST ska vara tillgängligt f.o.m. 4.0.2.

Jag är tom på fler idéer, tyvärr.

Medlem sedan apr. 2002830 inlägg
#16

Ah... Då var det där problemet låg :( Kör MySQL 3.23.33...

Tack ändå för ditt engagemang ;) Får bygga någon funktion i PHP istället, så vi syns säkert i det forumet istället ;)

// Nippe

Medlem sedan dec. 20003 887 inlägg
#17

Har du inga möjligheter att uppgradera MySQL? Det skulle väl vara den bästa lösningen och en varm rekomendation.

Medlem sedan mars 20007 896 inlägg
#18

FROM_UNIXTIME verkar ju annars fungera med 3.23.33:an:

SELECT COUNT( tbl_payment.payment_id )
FROM tbl_payment
GROUP BY FROM_UNIXTIME( TIMESTAMP( tbl_payment.timestamp ), "%Y %M %D" );

Konverterar först till ett TIMESTAMP-värde och kör sedan funktionen FROM_UNIXTIME.

Red.} Doh, TIMESTAMP-funktionen däremot är från 4.1.1... Du får göra det i PHP då, syns där. ;)

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