[php/mysql] vergelijk datum met unix time in mysql query

Pagina: 1
Acties:

Onderwerpen


Verwijderd

Topicstarter
Hallo

Ik ben bezig met een users online tabel en alles werkt alleen ik kan de datum niet omzetten en vergelijken met een unix tijd.

De query convert de datum (24-05-2004 12:13) naar unix tijd maar volgens mij werkt dat niet helemaal (normaal gesproken wel). iemand enig idee hoe ik dit op kan lossen. Ik wil het niet als unix tijd opslaan omdat ik niet een extra conversie slag wil ivm met al lopende scripts die de datum notatie gebruiken.

code:
1
2
3
4
5
6
7
8
9
10
11
12
<?
 function cleanDB(){
  $curTime=time()-60;
  $this->open_connection();
  $query="delete 
          from ledenOnline 
          where unix_timestamp(substring(lastAction,7,4),substring(lastAction,4,2)
                              ,substring(lastAction,1,2),substring(lastAction,12)) <= $curTime";
  $result=mysql_query($query, $this->conn_id)or die(mysql_error() ."<br>$query");
  $this->close_connection();
 }
?>


alvast bedankt voor de reacties

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 19:51

Creepy

Tactical Espionage Splatterer

Verwijderd schreef op donderdag 23 december 2004 @ 12:14:
Hallo

Ik ben bezig met een users online tabel en alles werkt alleen ik kan de datum niet omzetten en vergelijken met een unix tijd.

De query convert de datum (24-05-2004 12:13) naar unix tijd maar volgens mij werkt dat niet helemaal (normaal gesproken wel). iemand enig idee hoe ik dit op kan lossen. Ik wil het niet als unix tijd opslaan omdat ik niet een extra conversie slag wil ivm met al lopende scripts die de datum notatie gebruiken.
Wat werkt er niet aan? Krijg je een verkeerd formaat? Krijg je een foutmelding? Zijn de datum instellingen wel gelijk met de datum instellingen toen het wel werkte?

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Verwijderd

Topicstarter
Ik gebruikte concat(substr..... etc) om te sorteren op datum en dat werkte nu krijg ik gewoon een foutmelding terug:

code:
1
2
3
4
You have an error in your SQL syntax; check the manual that corresponds to 
your MySQL server version for the right syntax to use near 
substring(lastAction,4,2),substring(lastAction,1,2),
substring(lastAction,12)) <=' at line 1

Verwijderd

Topicstarter
Op zich doet hij het nu was " ' " vergeten, maar nog niet goed hij delete nu alles.

dit is nu de query

code:
1
$query="delete from ledenOnline where unix_timestamp('substring(lastAction,7,4),substring(lastAction,4,2),substring(lastAction,1,2),substring(lastAction,12)') <= '$curTime'";

  • Confusion
  • Registratie: April 2001
  • Laatst online: 01-03-2024

Confusion

Fallen from grace

Verwijderd schreef op donderdag 23 december 2004 @ 12:14:
De query convert de datum (24-05-2004 12:13) naar unix tijd
[..]
code:
1
2
3
4
<?
unix_timestamp(substring(lastAction,7,4),substring(lastAction,4,2)
                              ,substring(lastAction,1,2),substring(lastAction,12));
?>
Als lastAction de string is die boven de code staat, vergeet je dan niet bij 0 te beginnen met tellen? Overigens slikt unix_timestamp gewoon een string in bovenstaand formaat:
UNIX_TIMESTAMP
Statement Info:

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.
Examples:

SELECT UNIX_TIMESTAMP();
-> 882226357

SELECT UNIX_TIMESTAMP('1997-10-04 22:23:00');
-> 875996580
Heb je uberhaupt gecontroleerd of die serie substrings de goede string oplevert?

[ Voor 6% gewijzigd door Confusion op 23-12-2004 13:31 ]

Wie trösten wir uns, die Mörder aller Mörder?


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

Waarom probeer je in de database alles te converteren als je ook gewoon daar waar je mee gaat vergelijken kunt converteren :?

Dus ipv te vergelijken met een unix_timestamp vergelijk je met een date/time string (dit vindt mysql prima).

Wat je nu aan het doen bent lijkt me nogal overbodig namelijk.. traag is het in ieder geval..

[ Voor 23% gewijzigd door Bosmonster op 23-12-2004 14:56 ]

Pagina: 1