Toon posts:

mysql optellen/aftrekken tijden

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

Verwijderd

Topicstarter
Ik ben bezig met een tijdsregistratie module in Java met een mysql db, nu wil ik 2 (tijd)Strings bij elkaar optellen/aftrekken bijv.("10:00:00' + "00:30:00" ) nu heb ik al van alles geprobeert met mysql functies(werk met mysql versie: 4.0.20)

SELECT TIME_FORMAT("10:00:00" + "00:30:00", '%T')
(uitkomst = 00:00:00)

SELECT TIMEDIFF("10:00:00" + "00:30:00")
SELECT ADDTIME('10:00:00', '00:30:00')
SELECT SUBTIME('10:00:00', '00:30:00')

laatste 3 functies werken niet omdat deze pas vanaf mysql v. 4.1 of hoger werken!

Als iemand een oplossing heeft... graag!

Verwijderd

waarom maak je niet gewoon gebruik van UNIX timestamps?

Verwijderd

Kan je zulke operaties niet beter laten doen door Java? Gebruik een Calendar object en dan kan je met de methode add() optellen. Vraag de uren, minuten, seconden op van dat object en stel je eigen formaat samen.

[ Voor 46% gewijzigd door Verwijderd op 31-08-2004 12:15 ]


Verwijderd

Verwijderd schreef op 31 augustus 2004 @ 12:03:
Ik ben bezig met een tijdsregistratie module in Java met een mysql db, nu wil ik 2 (tijd)Strings bij elkaar optellen/aftrekken bijv.("10:00:00' + "00:30:00" ) nu heb ik al van alles geprobeert met mysql functies(werk met mysql versie: 4.0.20)

SELECT TIME_FORMAT("10:00:00" + "00:30:00", '%T')
(uitkomst = 00:00:00)

SELECT TIMEDIFF("10:00:00" + "00:30:00")
SELECT ADDTIME('10:00:00', '00:30:00')
SELECT SUBTIME('10:00:00', '00:30:00')

laatste 3 functies werken niet omdat deze pas vanaf mysql v. 4.1 of hoger werken!

Als iemand een oplossing heeft... graag!
Wat is er mis met DATE_ADD en DATE_SUB?
Die doen toch gewoon alles wat je wilt?

Verwijderd

Topicstarter
Verwijderd schreef op 31 augustus 2004 @ 12:17:
[...]


Wat is er mis met DATE_ADD en DATE_SUB?
Die doen toch gewoon alles wat je wilt?
krijg ik een foutmelding:

Error Code : 1064
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 ':00:00 , 00:30:00)' at line 1
(0 ms taken)

super vaag!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 19-05 21:24

NMe

Quia Ego Sic Dico.

Verwijderd schreef op 31 augustus 2004 @ 12:09:
waarom maak je niet gewoon gebruik van UNIX timestamps?
Vraag ik me ook af... Een database is voor opslag van data, niet voor de opmaak ervan. Sla liever hanteerbare formaten op, in plaats van leesbare strings, dan is het rekenen wat je nu doet ook meteen een stuk makkelijker. Later kun je in je programma of script atlijd het goede formaat weergeven.

'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

NMe84 schreef op 31 augustus 2004 @ 13:19:
Vraag ik me ook af... Een database is voor opslag van data, niet voor de opmaak ervan. Sla liever hanteerbare formaten op, in plaats van leesbare strings, dan is het rekenen wat je nu doet ook meteen een stuk makkelijker. Later kun je in je programma of script atlijd het goede formaat weergeven.
Het kan anders erg prettig zijn om datumberekeningen direct in je queries te doen:

Bijv uit mijn crontab:

/usr/bin/mysql -u root search -e "delete from result where changed < date_sub(now(),INTERVAL '1' DAY)"

Oftewel, wis alle entries uit de 'result' tabel die meer dan een dag geleden gewijzigd zijn.

Niks mis mee ;)

PS: TS check je syntax!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 19-05 21:24

NMe

Quia Ego Sic Dico.

Verwijderd schreef op 31 augustus 2004 @ 14:01:
Het kan anders erg prettig zijn om datumberekeningen direct in je queries te doen:

Bijv uit mijn crontab:

/usr/bin/mysql -u root search -e "delete from result where changed < date_sub(now(),INTERVAL '1' DAY)"

Oftewel, wis alle entries uit de 'result' tabel die meer dan een dag geleden gewijzigd zijn.

Niks mis mee ;)
En waarom zou dat met UNIX timestamps niet kunnen? ;)

'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.


  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 07-04 13:41
NMe84 schreef op 31 augustus 2004 @ 14:04:
[...]
En waarom zou dat met UNIX timestamps niet kunnen? ;)
Tuurlijk kan het, maar een database is over het algemeen geoptimaliseerd om met z'n eigen datum velden en functies te werken. (Mag je veronderstellen...)

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 19-05 21:24

NMe

Quia Ego Sic Dico.

PrisonerOfPain schreef op 31 augustus 2004 @ 14:54:
Tuurlijk kan het, maar een database is over het algemeen geoptimaliseerd om met z'n eigen datum velden en functies te werken. (Mag je veronderstellen...)
Mijn punt ging er eigenlijk om dat je beter geen strings kan gebruiken zoals TS doet. :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.


Verwijderd

NMe84 schreef op 31 augustus 2004 @ 14:04:
En waarom zou dat met UNIX timestamps niet kunnen? ;)
Kan natuurlijk, mijn reactie was eigenlijk meer aan NMe gericht die het nut van databerekeningen in SQL leek te betwijfelen.

Trouwens, ik gebruik meestal het mysql TIMESTAMP type omdat het zo handig geupdate wordt als het record wijzigt. Omzetten naar UNIX timestamps is geen probleem en kan ook inderdaad erg handig zijn als je wilt rekenen.
Pagina: 1