N nkrantz Medlem sedan apr. 2002 830 inlägg Frågan 13 nov. 2003 10:09 #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
S SPiN Medlem sedan mars 2000 7 896 inlägg Vad använder du för DBMS?
N nkrantz Medlem sedan apr. 2002 830 inlägg mySQL... timstampet är sparat som UNIXtimestamp...
Engine^ Medlem sedan dec. 2000 3 887 inlägg 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..
S SPiN Medlem sedan mars 2000 7 896 inlägg Funktionen heter FROM_UNIXTIMESTAMP() i MySQL.
Testa:
SELET COUNT(*)
FROM tabell
GROUP BY FROM_UNIXTIMESTAMP(tabell.field, "%Y %M %D");
N nkrantz Medlem sedan apr. 2002 830 inlägg 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
S SPiN Medlem sedan mars 2000 7 896 inlägg Får du ett 0-värde eller ingen utskrift alls?
N nkrantz Medlem sedan apr. 2002 830 inlägg 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
N nkrantz Medlem sedan apr. 2002 830 inlägg 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
S SPiN Medlem sedan mars 2000 7 896 inlägg 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" );
N nkrantz Medlem sedan apr. 2002 830 inlägg 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?
S SPiN Medlem sedan mars 2000 7 896 inlägg 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. :)
S SPiN Medlem sedan mars 2000 7 896 inlägg Aha! Testa då med mitt CAST-exempel om fältet är VARCHAR.
N nkrantz Medlem sedan apr. 2002 830 inlägg 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
S SPiN Medlem sedan mars 2000 7 896 inlägg 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.
N nkrantz Medlem sedan apr. 2002 830 inlägg 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
Engine^ Medlem sedan dec. 2000 3 887 inlägg Har du inga möjligheter att uppgradera MySQL? Det skulle väl vara den bästa lösningen och en varm rekomendation.
S SPiN Medlem sedan mars 2000 7 896 inlägg 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. ;)