Avatar billede t-johansen Juniormester
17. maj 2017 - 10:26 Der er 4 kommentarer og
1 løsning

sql query count antal fra til dato

Kode-----------

$dagstartmd = strtotime($dagsdato."first day of 0 month");
$dagslutmd = strtotime($dagsdato."last day of 0 month");
$dagstartsidstmd = strtotime($dagsdato."first day of -1 month");
$dagslutsidstmd = strtotime($dagsdato."last day of -1 month");

echo "første dag i denne måned: ". strftime("%d %B %Y", $dagstartmd)." ".$dagstartmd."<br>";
echo "sidste dag i denne måned: ". strftime("%d %B %Y", $dagslutmd)." ".$dagslutmd."<br>";
echo "første dag i sidste måned: ". strftime("%d %B %Y", $dagstartsidstmd)." ".$dagstartsidstmd."<br>";
echo "sidste dag i sidste måned: ". strftime("%d %B %Y", $dagslutsidstmd)." ".$dagslutsidstmd."<br>";

kode------------

giver dette resultat:

første dag i denne måned: 01 maj 2017 1493589600
sidste dag i denne måned: 31 maj 2017 1496181600
første dag i sidste måned: 01 april 2017 1490997600
sidste dag i sidste måned: 30 april 2017 1493503200



Når jeg så prøver at tælle sammen på en fra-til dato:

kode---------------

$rset = mysql_query("SELECT COUNT(*) as total from `vognliste`
WHERE `firma` = $firmaid
AND `status` < 4
AND `levdato` >= '".$dagstartmd."'
AND `levdato` <= '".$dagslutmd."'
",$db);

$data=mysql_fetch_assoc($rset);
echo "antal i denne måned: ". $data['total']."<br>";

kode----------------
giver det "0"

men hvis jeg fjerner den sidste " AND `levdato` <= '".$dagslutmd."'  "

så kan den sagtens tælle at der 29 poster fra 1.maj 2017, hvilket passer.


nogen der har en ide til hvad jeg gør galt?

ved godt det skulle have været mysqli........ (bliver en anden gang)
Avatar billede t-johansen Juniormester
17. maj 2017 - 10:41 #1
når jeg indsætter unix tiden siger den også 0

AND `levdato` >= 1493589600
AND `levdato` <= 1496181600
Avatar billede t-johansen Juniormester
17. maj 2017 - 11:07 #2
har fundet problemet ved bare ikke hvordan jeg løser det...


i min tabel er levdato gemt i formattet 2017-05-01
Avatar billede jakobdo Ekspert
17. maj 2017 - 12:27 #3
Hvilken datatype gemme du levdato i ?
Bruger du Date eller Datetime ?
Avatar billede tvilling53 Seniormester
17. maj 2017 - 14:19 #4
SELECT * from  `vognliste` WHERE  `levdato`>=? && 'levdato <= ? && `firma`=?
Datoformatet som du sender som query skal være 2017-07-17

Thomas V
Avatar billede t-johansen Juniormester
17. maj 2017 - 14:34 #5
fandt løsningen, det er et virvar af dato formater.

har lavet lidt forskellige variabler

$dagsdato_14 = strtotime($dagsdato."14 days");
$dagsdato_1 = $dagsdato;
$dagsmd = strftime("%B", $idag->getTimestamp());
$dag_start_md = strtotime($dagsdato."first day of 0 month");
$dag_start_md_dato = strftime("%Y-%m-%d", $dag_start_md);
$dag_slut_md = strtotime($dagsdato."last day of 0 month");
$dag_slut_md_dato = strftime("%Y-%m-%d", $dag_slut_md);
$dag_start_sidst_md = strtotime($dagsdato."first day of -1 month");
$dag_start_sidst_md_dato = strftime("%Y-%m-%d", $dag_start_sidst_md);
$dag_slut_sidst_md = strtotime($dagsdato."last day of -1 month");
$dag_slut_sidst_md_dato = strftime("%Y-%m-%d", $dag_slut_sidst_md);
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester