webForumDet fria alternativet

Räkna poster ifrån olika datum

Databaser & SQL

10 svar · 488 visningar · startad av Asa

Medlem sedan dec. 20011 860 inlägg
Frågan#1

Vill räkna antal poster som gjorts idag, igår, denna vecka, denna månad via sql och undrar hur man skall skriva.. Använder MySQL 5 databas. buddatum är i följande format 2006-07-02 22:54:00

Så här är det för att hämta dagens poster:

strBudIdag  = Conn.Execute("Select Count(*) From tbl_bud Where to_days(buddatum)= to_days(current_date)").Fields(0)

Men hur skriver man de andra?

Medlem sedan mars 20032 667 inlägg
#2

För i går kan du testa följande:

WHERE DATE_FORMAT(buddatum, '%Y-%m-%d') = DATE_SUB(CURDATE(), INTERVAL 1 DAY)
Medlem sedan dec. 20011 860 inlägg
#3

Det funkade prima.. :) Supertack! Nu väntar jag bara på svar för de andra innan jag sätter slutgiltigt svar!

Medlem sedan mars 20032 667 inlägg
#4

Då borde du kunna skriva:

Senaste veckan:

WHERE DATE_FORMAT(buddatum, '%Y-%m-%d') = DATE_SUB(CURDATE(), INTERVAL 7 DAY)

alternativt:

WHERE DATE_FORMAT(buddatum, '%Y-%m-%d') = DATE_SUB(CURDATE(), INTERVAL 1 WEEK)

Senaste månaden:

WHERE DATE_FORMAT(buddatum, '%Y-%m-%d') = DATE_SUB(CURDATE(), INTERVAL 1 MONTH)
Medlem sedan dec. 20011 860 inlägg
#5

Hmm, verkar inte skriva ut rätt. Den skriver bara ut dagen för 1 vecka sedan och för 1 månad sedan. Vill visa alla poster denna vecka och alla poster denna månad. Nu i detta fall vecka 26 och juli månad.

Medlem sedan mars 20032 667 inlägg
#6

Ahh, liten miss av mig. :(

Du måste klart hämta posterna där buddatum är större än aktuellt intervall. Byt ut likhetstecknet mot ett >, tror jag det blir. ;)

Medlem sedan dec. 20011 860 inlägg
#7

Det verkar funka prima. Tackar för all hjälp. Denna kod är rätt på allt:

Select Count(*) From tbl_bud Where to_days(buddatum)= to_days(current_date)
Select Count(*) From tbl_bud WHERE DATE_FORMAT(buddatum, '%Y-%m-%d') = DATE_SUB(CURDATE(), INTERVAL 1 DAY)
Select Count(*) From tbl_bud Where DATE_FORMAT(buddatum, '%Y-%m-%d') > DATE_SUB(CURDATE(), INTERVAL 7 DAY)
Select Count(*) From tbl_bud Where DATE_FORMAT(buddatum, '%Y-%m-%d') > DATE_SUB(CURDATE(), INTERVAL 1 MONTH)
Medlem sedan dec. 20011 860 inlägg
#8

Det verkar ej funka iallafall. Den visar alla 7 dagar från idag och bakåt. Samma för månad. Den skall visa denna veckas poste och denna mmånads poster. Ex v 27 och juli månad.

Medlem sedan mars 20032 667 inlägg
#9

Asa skrev:

Det verkar ej funka iallafall. Den visar alla 7 dagar från idag och bakåt. Samma för månad. Den skall visa denna veckas poste och denna mmånads poster. Ex v 27 och juli månad.

Aha, då missförstod jag dig. ;)

Medlem sedan mars 20032 667 inlägg
#10

Okey, då gör jag ett nytt försök. ;) Är ute på lite hal is nu, men detta KAN fungera om jag tolkat manualen korrekt:

Vecka:

WHERE YEAR(CURDATE()) = YEAR(buddatum) AND WEEK(CURDATE(), 3) = WEEK(buddatum, 3)

Månad:

WHERE YEAR(CURDATE()) = YEAR(buddatum) AND MONTH(CURDATE()) = MONTH(buddatum)
Medlem sedan dec. 20011 860 inlägg
#11

Funkade fint. Tackar :)

264 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)