[SQL] data's voor 1970 omzetten naar timestamp

Pagina: 1
Acties:

  • Johnny
  • Registratie: December 2001
  • Laatst online: 22-05 10:01

Johnny

ondergewaardeerde internetguru

Topicstarter
Er is een tabel in een MySQL database (3.23.44) met gebruikers waarvan de geboortedata in een kolom van het type DATE (yyyy-mm-dd) staat.

Ik heb die data nu als UNIX_TIMESTAMP nodig om er daarna lekker mee te kunnen rekenen in PHP.

SQL:
1
SELECT UNIX_TIMESTAMP(date_birth) FROM users


Dat werkt goed voor alle mensen jonger dan 34,5 jaar die een geboortedatum hebben ingevuld. De rest wordt allemaal "0".

- Alle data voor 1-1-1970 worden "0"
- Niet ingevulde (NULL) data worden "0"

Ik wil een negatief getal, of een NULL terug hebben als er geen datum is ingevuld.

Het spul draait op Linux, dus het feit dat Windows geen negatieve timestamps kan gebruiken speelt hier ook geen rol.

Als alternatief zou ik in PHP de data kunnen opsplitsen en verwerken met mktime(), maar dat lijkt me vreselijk innefficient.

[ Voor 3% gewijzigd door Johnny op 01-08-2004 00:04 ]

Aan de inhoud van de bovenstaande tekst kunnen geen rechten worden ontleend, tenzij dit expliciet in dit bericht is verwoord.


  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
Volgens mij werken Linux timestamps ook niet voor 1970.

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 14:07
OlafvdSpek schreef op 31 juli 2004 @ 21:59:
Volgens mij werken Linux timestamps ook niet voor 1970.
Waarom denk jij van niet. Als ik de date/time sectie van de PHP manual zo even doorneem krijg ik juist de indruk dat alles behalve Windows ook negatieve Unix timestamps aan kan en kan genereren.

  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
- Alle data voor 1-1-1970 worden "0"
Dus of Linux, of MySQL gooit roet in het eten (en ik gokte op Linux).
MySQL heeft wel de functies from_days en to_days, daarmee kun je ook rekenen.

[ Voor 30% gewijzigd door Olaf van der Spek op 31-07-2004 22:21 ]


  • igmar
  • Registratie: April 2000
  • Laatst online: 12-05 15:46

igmar

ISO20022

Sybr_E-N schreef op 31 juli 2004 @ 22:04:
Waarom denk jij van niet. Als ik de date/time sectie van de PHP manual zo even doorneem krijg ik juist de indruk dat alles behalve Windows ook negatieve Unix timestamps aan kan en kan genereren.
Sommige PHP functies kunnen ermee omgaan. De libc functies kunnen dat echter niet, en het is ook waarschijnlijk dat de MySQL functies dat ook niet kunnen.

  • Johnny
  • Registratie: December 2001
  • Laatst online: 22-05 10:01

Johnny

ondergewaardeerde internetguru

Topicstarter
Ik heb inmiddels de workaround maar gedaan, dus gewoon de datum als yyyy-mm-dd ophalen en vervolgens opsplitsen en omzetten.
PHP:
1
2
3
if($date != NULL) {
$timestamp = mktime(0, 0, 0, substr($date, 5, 2), substr($date, 8, 2), substr($date, 0, 4));
}

Aan de inhoud van de bovenstaande tekst kunnen geen rechten worden ontleend, tenzij dit expliciet in dit bericht is verwoord.

Pagina: 1