[PHP] Wat is in mijn geval beter: mysyl NOW() of php time()?

Pagina: 1
Acties:
  • 3.970 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • markg85
  • Registratie: Februari 2003
  • Laatst online: 14-08 20:01
Hoi,

Ik heb een lastig probleempje met timestamps..
ik heb namelijk een zoek formulier gemaakt waarbij je ook op tijden of datums kan zoeken.. nu is het probleem dat de timestamp in de database een php timestamp is die gemaakt is met time(); nu wou ik de DATE_FORMAT() optie van mysql gebruiken om die timestamp tijdens het doorzoeken van de database weer om te zetten naar een leesbare timestamp waar dus ook echt door kan worden gezocht.. enig nadeel hierin is dat ik het niet voor elkaar krijg om die php timestamp te gebruiken in DATE_FORMAT().... dit zou ik op kunnen lossen door alle timestamps te gaan converteren naar mysql timestamps en dan zou het moeten werken... MAAR ik gebruik die php timestamp op nog veel meer plaatsen en om dat allemaal aan te gaan passen zie ik niet echt zitten..

wat lijkt jullie handig? NOW() gebruiken en daarmee ook mysql meer benutten met DATE_FORMAT() of TIME() gebruiken (van php) en veel extra moeite doen om het zoekformulier daarnee te laten werken..??

de beste oplossing (denk ik) is een optie dat ik DATE_FORMAT() kan gebruiken met php timestamps :) zonder ook maar enige extra php code!! die ene query levert namelijk de zoek resultaten op en zodra ik er php code bij moet gebruiken moet de hele query structuur anders en worden het meer query`s... (of niet??)

Alvast bedankt

[ Voor 3% gewijzigd door markg85 op 10-12-2006 17:06 ]


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 21-09 02:21

Janoz

Moderator Devschuur®

!litemod

Gebruik voor het opslaan van je datums in de database gewoon het datum type. Daar is het tenslotte voor bedoeld. Als je in php graag met een unix timestamp wilt werken dan heb je daarvoor datum functies van mysql die dit keurig voor je converteren.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • markvt
  • Registratie: Maart 2001
  • Laatst online: 19-09 11:13

markvt

Peppi Cola

Wil je in de database zoeken, dan is het makkelijker om ervoor te zorgen dat er in de database een begrijpelijke datum (datum van het datum type) staat waar de database mee kan werken.

[ Voor 7% gewijzigd door markvt op 10-12-2006 17:07 ]

van-tilburg.info -=- meka (sega emulator) - Proud MEDION fanclub member - KOPPIG VOLHOUDEN !


Acties:
  • 0 Henk 'm!

  • markg85
  • Registratie: Februari 2003
  • Laatst online: 14-08 20:01
Janoz schreef op zondag 10 december 2006 @ 17:06:
Gebruik voor het opslaan van je datums in de database gewoon het datum type. Daar is het tenslotte voor bedoeld. Als je in php graag met een unix timestamp wilt werken dan heb je daarvoor datum functies van mysql die dit keurig voor je converteren.
het datum type kan helaas niet.. het is een uitgebreid script (paFileDB) waar de gebruikers zelf hun datum formaat in kunnen stellen.. dus het moet een timestamp zijn.. en tijdens de zoek query moet die timestamp even leesbaar worden zodat die met LIKE %2006% ook echt gevonden kan worden.

Acties:
  • 0 Henk 'm!

  • PanMan
  • Registratie: November 1999
  • Laatst online: 18-09 22:50

PanMan

Spun!

Je kan het wellicht ook omkeren: Ik werk meestal met unix timestamps in databases. Dan kan je je data gewoon converteren naar timestamps, en bijvoorbeeld zoeken met BETWEEN x AND y.

Where a calculator on the ENIAC is equipped with 18,000 vacuum tubes and weighs 30 tons, computers in the future may have only 1,000 vacuum tubes and weigh only 1.5 tons.
– Popular Mechanics, March 1949


Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

PanMan schreef op zondag 10 december 2006 @ 17:38:
Je kan het wellicht ook omkeren: Ik werk meestal met unix timestamps in databases. Dan kan je je data gewoon converteren naar timestamps, en bijvoorbeeld zoeken met BETWEEN x AND y.
't Is alleen rotwerk om dan met timezones, zomer- en wintertijden en maandbereiken enzo te werken ;)

Acties:
  • 0 Henk 'm!

  • markg85
  • Registratie: Februari 2003
  • Laatst online: 14-08 20:01
ACM schreef op zondag 10 december 2006 @ 18:32:
[...]

't Is alleen rotwerk om dan met timezones, zomer- en wintertijden en maandbereiken enzo te werken ;)
ja idd :P dat heb je ook nog..
ik ben bang dat het t beste is om mysql`s NOW() te gebruiken.. de voordelen die je dan met DATE_FORMAT() kan doen zijn toch wel erg aantrekkelijk.

en heeft php een functie of het tijd formaat van NOW() (van mysql) te gebruiken? of is die NOW() gewoon een unix timestamp?

Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

now() geeft geen unix timestamp, maar je hebt in mysql wel from_unixtime($unixtime) -> mysql date en unix_timestamp(mysql date) -> unixtime die je in je queries kan gebruiken om unix times van php te converteren. Daarnaast is er natuurlijk van alles mogelijk met de functies in php zoals date() en strftime() e.d.

Acties:
  • 0 Henk 'm!

  • markg85
  • Registratie: Februari 2003
  • Laatst online: 14-08 20:01
FROM_UNIXTIME() met php`s time() werkt gewoon... en daar kom ik ook nu pas achter :(

nu moet ik het nog werkend krijgen in die array styled mysql api..

Acties:
  • 0 Henk 'm!

Verwijderd

markg85 schreef op zondag 10 december 2006 @ 17:09:
het datum type kan helaas niet.. het is een uitgebreid script (paFileDB) waar de gebruikers zelf hun datum formaat in kunnen stellen.. dus het moet een timestamp zijn.. en tijdens de zoek query moet die timestamp even leesbaar worden zodat die met LIKE %2006% ook echt gevonden kan worden.
Niet gehinderd door enige kennis van PHP of MySQL, maar is de representatie van 't datum formaat niet iets wat je aan de client kant afhandelt, en is LIKE '%2006%' niet puur een SQL string functie?
Oftewel, waarom zou je het datum type van de database die je gebruikt niet hanteren wanneer je een datum op wilt slaan??? :?

Acties:
  • 0 Henk 'm!

  • markg85
  • Registratie: Februari 2003
  • Laatst online: 14-08 20:01
Verwijderd schreef op zondag 10 december 2006 @ 19:57:
[...]
Niet gehinderd door enige kennis van PHP of MySQL, maar is de representatie van 't datum formaat niet iets wat je aan de client kant afhandelt, en is LIKE '%2006%' niet puur een SQL string functie?
Oftewel, waarom zou je het datum type van de database die je gebruikt niet hanteren wanneer je een datum op wilt slaan??? :?
dat is toch ook wat ik vraag ;)
ik vraag welke in mijn geval beter zou zijn als je die tijd string in zowel php als mysql wil gebruiken.. maarja.. ik wist nog niet van FROM_UNIXTIME() wat de oplossing voor mij lijkt te zijn.

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 21-09 02:21

Janoz

Moderator Devschuur®

!litemod

Sowieso zou je nergens een datum als string moeten gebruiken. Voor datum moet je gewoon het type datum gebruiken. Helaas heeft php geen datum type. (Maar ik herhaal mezelf :) ).

Gewoon, zoals afterlive en andere zeggen, in de database een dateveld. Zodra je naar php gaat dit met UNIX_TIMESTAMP omzetten naar epoch (aantal seconden sinds 1-1-1970, wat ook uit time() komt) en bij het afdrukken omzetten via de date() methode van php zelf.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • markg85
  • Registratie: Februari 2003
  • Laatst online: 14-08 20:01
Janoz schreef op zondag 10 december 2006 @ 23:07:
Sowieso zou je nergens een datum als string moeten gebruiken. Voor datum moet je gewoon het type datum gebruiken. Helaas heeft php geen datum type. (Maar ik herhaal mezelf :) ).

Gewoon, zoals afterlive en andere zeggen, in de database een dateveld. Zodra je naar php gaat dit met UNIX_TIMESTAMP omzetten naar epoch (aantal seconden sinds 1-1-1970, wat ook uit time() komt) en bij het afdrukken omzetten via de date() methode van php zelf.
ik laat ook nergens een datum string zien.. ze worden allemaal omgezet naar een leesbaar formaat.. het punt is alleen dat ik die php data string op meer plekken gebruik en ik heb niet echt veel zin om al die plekken op te gaan zoeken en anders in te stellen zodat ze met die NOW() output kunnen werken..

maargoed het is nu opgelost met die unix datastring in de mysql quiry :) is ook vrijwel even sterk als DATE_FORMAT() dus zo`n probleem is het dus allemaal niet.
Pagina: 1