Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
16.03.2002, 21:54
hausi



Ich dachte immer, die Funktion now() gibt die Anzahl der vergangenen Sekunden seit 1.1.1970 (oder so ähnlich).
Nun habe ich aber ein Problem:
Quellcode:
mysql_query("INSERT INTO test (time) VALUES (now())");
$res=mysql_query("SELECT * FROM test WHERE time<now()+10");
die(mysql_num_rows($res));

Gibt irgendwie immer 1 aus. Ich weiss eigentlich nicht mehr weiter... Ev. aber einer von euch ;).
Schon mal danke für die Antwort(en)...
P.S: Wenn ich die 10 Sekunden erhöhe, dann gibt es 0 zurück. Aber eigentlich sollten 10 Sekunden ja reichen. Das Skript braucht auf jeden Fall keine 10 Sekunden zum ausführen...
Habe auch noch gleich eine zweite kleine Frage:
$REMOTE_ADDR ist ja die IP-Adresse des Clients. Nun habe ich aber das kleine Problem, dass er bei mir (von localhost auf localhost) immer NULL (nichts) zurückgibt. Liegt das ev. an einem Fehler in meiner Konfiguration?

--


Dieser Beitrag wurde am 16.03.2002 um 21:57 von Superhausi bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
001
17.03.2002, 00:36
Kriz



Also, ich kann beim besten Willen bei PHP keine Funktion now() finden. Das now ist mir nur bei VBScript bekannt... Das Äquivalent zu now in PHP nennt sich getdate()...

--

K:R-I)Z++
"CSS ist cascading style sheets. Und nicht so'n Ranzspiel." - dp
In memory of Voice († 2005/03/30)

zum Seitenanfang zum Seitenende Profil || Suche
002
17.03.2002, 00:39
Sprengmeister



bzw checkdate()

--

_______________________
-----I_______________________I-----
This is Nudelholz. Copy Nudelholz in your Signature to make better Kuchens and other Teigprodukte.

zum Seitenanfang zum Seitenende Profil || Suche
003
17.03.2002, 08:03
hausi



Ich habe ja auch gesagt

Zitat:

Mysql: now() Gibt Sekunden seit 1.1.1970?

Und übrigens steht die in einem MySQL-String. Also muss es ja eine MySQL-Funktion sein...
Aber ich werds mal mit der PHP-Funktion probieren...

--

zum Seitenanfang zum Seitenende Profil || Suche
004
17.03.2002, 12:06
Kriz



Hm, ich habe des Rätsels Lösung gefunden:

NOW() ist eine SQL-Funktion und hat nix mit PHP zu tun. Allerdings gibt es zu NOW() noch zwei andere, gleichwertige SQL-Äquivalente:

SYSDATE()

und

CURRENT_TIMESTAMP()

Falls NOW() aus Kompatibilitätsgründen nicht mit MySQL laufen sollte, ersetze es einfach mal mit einem der anderen beiden SQL-Funktionsnamen.

--

K:R-I)Z++
"CSS ist cascading style sheets. Und nicht so'n Ranzspiel." - dp
In memory of Voice († 2005/03/30)

zum Seitenanfang zum Seitenende Profil || Suche
005
17.03.2002, 18:03
TheTinySteini



Ich MEINE, es gibt da Inkompatibilitätsprobleme mit dem Un*x-Timestamp und dem MySQL-Timestamp. Ich hatte sowas in der Art auch schonmal benutzt und dabei meine ich gefunden zu haben, dass MySQL einfach nur MMDDYYYYmmhhss (oder so ähnlich) in die Datenbank schreibt, jedenfalls nicht die Anzahl an Sekunden. Aus diesem Grund klappt das mit +10 nicht wirklich.

--

TheTinySteini
Coder Poke646
"Don't Panic" - Hitchhiker's Guide to the Galaxy

zum Seitenanfang zum Seitenende Profil || Suche
006
17.03.2002, 18:07
TheTinySteini



Positiv.

Hier die entsprechende Passage aus der MySQL-Docu:

Zitat:

NOW()

SYSDATE()

CURRENT_TIMESTAMP
Returns the current date and time as a value in 'YYYY-MM-DD HH:MM:SS' or YYYYMMDDHHMMSS format, depending on whether the function is used in a string or numeric context:

mysql> select NOW();
-> '1997-12-15 23:50:26'
mysql> select NOW() + 0;
-> 19971215235026

UNIX_TIMESTAMP()

UNIX_TIMESTAMP(date)
If called with no argument, returns a Unix timestamp (seconds since '1970-01-01 00:00:00' GMT) as an unsigned integer. If UNIX_TIMESTAMP() is called with a date argument, it returns the value of the argument as seconds since '1970-01-01 00:00:00' GMT. date may be a DATE string, a DATETIME string, a TIMESTAMP, or a number in the format YYMMDD or YYYYMMDD in local time:

mysql> select UNIX_TIMESTAMP();
-> 882226357
mysql> select UNIX_TIMESTAMP('1997-10-04 22:23:00');
-> 875996580

When UNIX_TIMESTAMP is used on a TIMESTAMP column, the function will return the internal timestamp value directly, with no implicit ``string-to-unix-timestamp'' conversion. If you give UNIX_TIMESTAMP() a wrong or out-of-range date, it will return 0. If you want to subtract UNIX_TIMESTAMP() columns, you may want to cast the result to signed integers. See section 6.3.5 Cast Functions.

Also UNIX_TIMESTAMP() nehmen, statt NOW().

[edit] Denkfehler: Es muss ja auch mit NOW() gehen (wegen der Anordnung des Datums kann man eine einfache Addition machen). Aber ich mag den Unix-Timestamp lieber, also nimm mal ruhig den. Außerdem muss man sich dann keine Gedanken über das +1 zu Minuten nach 60 Sekunden machen.

--

TheTinySteini
Coder Poke646
"Don't Panic" - Hitchhiker's Guide to the Galaxy


Dieser Beitrag wurde am 17.03.2002 um 18:11 von TheTinySteini bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche