webForumDet fria alternativet

INTERVAL vs UNIX_TIMESTAMP?

6 svar · 456 visningar · startad av Guldstrand

GuldstrandMedlem sedan juli 20041 274 inlägg
#1

Vilket sätt är "bäst" att använda?

// Alt. 1
$sql = mysql_query('SELECT COUNT(id) AS num_mem FROM users WHERE ADDDATE(added, INTERVAL 1 DAY) > NOW()');
$medlemmar = mysql_result($sql,0);

//Alt. 2
$medlemmar = number_format(get_row_count("users", "WHERE UNIX_TIMESTAMP(" . get_dt_num() . ") - UNIX_TIMESTAMP(added) < 86400"));
function get_dt_num()
{
  return gmdate("YmdHis");
}

Båda alternativen visar "fel" antal. :o

Peter SMedlem sedan dec. 20025 484 inlägg
#2
  1. Vilket resultat får du och vilket resultat förväntade du dig?
  2. Hur vet du att du får fel antal?
GuldstrandMedlem sedan juli 20041 274 inlägg
#3

Peter S skrev:

  1. Vilket resultat får du och vilket resultat förväntade du dig?
  2. Hur vet du att du får fel antal?

Jag får fler resultat än vad som "stämmer".
Verkar som att jag även får resultat för igår. :x

GuldstrandMedlem sedan juli 20041 274 inlägg
#4
// Alt. 1
$sql = mysql_query('SELECT COUNT(id) AS num_mem FROM users WHERE ADDDATE(added, INTERVAL 1 DAY) > NOW()');
$medlemmar = mysql_result($sql,0);
 
//Alt. 2
$medlemmar = number_format(get_row_count("users", "WHERE UNIX_TIMESTAMP(" . get_dt_num() . ") - UNIX_TIMESTAMP(added) < 86400"));

..ger precis samma resultat, (som är fel).

Peter SMedlem sedan dec. 20025 484 inlägg
#5

Testa att se vad du får med "SELECT NOW(), ADDDATE(added, INTERVAL 1 DAY) FROM users ORDER BY id LIMIT 10". Då ser du om ADDATE() gör vad du tror att den gör.

GuldstrandMedlem sedan juli 20041 274 inlägg
#6

Valde att använda följande kod istället.

$medlemmar = number_format(get_row_count("users", "WHERE UNIX_TIMESTAMP(" . get_dt_num() . ") - UNIX_TIMESTAMP(added) < 86400"));

Verkar fungera nu helt plötsligt. (Gjorde inte det innan.) :o

EDIT: Om jag testar liknande för hur många inlägg som har postats IDAG, så får jag 20 istället för 14 (som är rätt).

$inlagg_dag = number_format(get_row_count("posts", "WHERE UNIX_TIMESTAMP(" . get_dt_num() . ") - UNIX_TIMESTAMP(added) < 86400"));

Ger f*n upp snart. :(

GuldstrandMedlem sedan juli 20041 274 inlägg
#7

Vill alltså endast visa hur många som har reggat sig under dagen IDAG (2009-01-21) fram till nuvarande tid (22:41).

EDIT: Har löst det.

$medlemmar = number_format(get_row_count("users", "WHERE added >= DATE(NOW())"))

;

Genererad på 499 ms · cache AV · v20260730165559-full.f96bc7eb