Toon posts:

[SQL] epoch per maand uit sql db halen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een db met daarin een een epoch tijdstempel.

nu wil ik bijvoorbeeld alle entries die in MRT 2006 zijn gedaan eruit halen.
dus heb ik iets nodig van MONTH(Datum_in_epoch_tijd) maar dat werkt allemaal niet.

kan dit met SQL of moet ik met tijd tussen date("U") van 1-3-2006:00:00 en 1-4-2006:00:00 werken.

  • MTWZZ
  • Registratie: Mei 2000
  • Laatst online: 13-08-2021

MTWZZ

One life, live it!

Staat je tijd als een long (?) opgeslagen?
Zo ja dan kun je de begin- en einddatum als epoch pakken en een >= <= doen in SQL

Nu met Land Rover Series 3 en Defender 90


Verwijderd

Topicstarter
Nee gewoon een integer of een varchar

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Verwijderd schreef op dinsdag 24 oktober 2006 @ 12:14:
Nee gewoon een integer of een varchar
Een integer is groot zat. Varchar zou ik niet doen, omdat opslag veel meer ruimte kost en het veld slecht te indexeren is. Maar ook met een integer werkt het zoals voorgesteld door MTWZZ en ook door jezelf gemeld als mogelijkheid. Waarom je date("U") zou gebruiken is me alleen niet helemaal duidelijk, want als tweede argument van date moet je toch al de timestamp opgeven zolang je niet alleen in het huidige moment geïnteresseerd bent.

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

Gewoon een integer "of" een varchar? Weet je niet wat het echt is? Of verzin je je antwoord ter plekke?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

Topicstarter
Ik bedoel het is gewoon als platte text opgeslagen.
Bij nakijken is het opgeslagen als varchar.

Mijn vraag is:
kan ik het door middel van de query SELECT ..., MONTH($_GET[maand]) of moet ik eerst in PHP bepalen welke maand ik wil zien en dan SELECT * FROM Table WHERE maand > x AND maand < y is.
waarbij ik x en y heb "berekend" in php.

[ Voor 3% gewijzigd door Verwijderd op 24-10-2006 13:02 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

Waarom sla je een cijfer überhaupt op als een varchar?

Ik heb geen idee of de datum- en tijdfuncties dat automatisch casten naar een waarde waar ze mee overweg kunnen, maar ik vermoed van niet. Verder denk ik dat het berekenen van begin- en eindtijden in PHP makkelijker zou zijn in dit geval, maar die varchar gaat je daarbij nog problemen opleveren.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Cartman!
  • Registratie: April 2000
  • Niet online
Als je je timestamps opslaat als int(10), unix timestamp dus kun je gewoon simpel met PHP de start timestamp en eindtimestamp maken en daarmee de query uitvoeren. Beetje als 'WHERE timestamp > start AND timestamp < end'

Sinds ik 1 keer timestamps in (my)SQL opsla als unix timestamp wil ik nooit meer terug. Erg makkelijk mee te rekenen.

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 10-02 15:42

Janoz

Moderator Devschuur®

!litemod

Waarom gebruik je geen date type? Die zijn er immers voor bedoeld. Kun je gewoon where month(blaat)= dit and year blaat = dat doen.

@cartman! Ook voor jou geldt dat. Mocht je unix timestamps nodig hebben dan kun je altijd nog de unix_timstamp() functie gebruiken om de epoch terug te krijgen en hier mee te rekenen.

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


  • Cartman!
  • Registratie: April 2000
  • Niet online
Ik sla echt de timestamp op, dan kun je dit later converteren hoe je maar wilt in welk formaat dan ook. Veel makkelijker dan eerst via MySQL de unix_timestamp terughalen en dan weer terug converteren naar een ander formaat. Rekenen met unix timestamp is ook erg makkelijk. Direct opslaan als timestamp heeft dus echt mijn voorkeur.

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

Een datum/tijdcombinatie opslaan als timestamp kan best voordelen hebben over het opslaan in een DATETIME veld, net zoals dat andersom ook het geval is. Voor beide methoden is wel wat te zeggen. en beide methoden worden ook veelvuldig gebruikt. Mijn eigen voorkeur gaat uit naar het gebruik van DATETIME velden, voornamelijk omdat dat gevoelsmatig gewoon beter uitziet, maar ook omdat je dan standaard meer datum- en tijdfuncties tot je beschikking hebt zonder conversies.

Verder zijn beide manieren natuurlijk beter dan het opslaan in varchar-velden. :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1