Rechnen mit Datum und Uhrzeit in SQL

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
frindly
Beiträge: 1085
Registriert: 23.10.2007 08:13:26
Wohnort: Recklinghausen

Rechnen mit Datum und Uhrzeit in SQL

Beitrag von frindly » 12.11.2013 10:22:06

Hallo
ich möchte gerne mit einer Webseite (und PHP)
das aktuelle Datum und Uhrzeit erfassen und in eine mySQL Datenbank speichern.
Optimaler weise so das ich später einfach damit rechnen kann, z.b.
Endzeit - Startzeit = Dauer

Das "nackte" Auslesen erledige ich hiermit:

Code: Alles auswählen

<input type="button" name="Ankunft" value="Ankunft"
	        onclick="this.form.textfeld.value='<?php $timeget = time(); $datum = date("d.m.Y",$timeget); echo $datum; ?>;<?php $timeget = time(); $uhrzeit = date("H:i",$timeget); echo $uhrzeit; ?>'">
Damit zeigte ich Uhrzeit und Datum an, aber um die Werte in die Datenbank zu bekommen,
damit ich später damit rechnen kann ist es sehr unpassend.

Wie bekomme ich am besten das aktuelle Datum/Uhrzeit in die Datenbank, welches Format
sollte das Datumfeld in der Datenbank dann haben?

Benutzeravatar
4A4B
Beiträge: 962
Registriert: 09.11.2011 11:19:55
Kontaktdaten:

Re: Rechnen mit Datum und Uhrzeit in SQL

Beitrag von 4A4B » 12.11.2013 10:33:45

Mit einem Unix Timestamp lässt sich einfach rechnen. In PHP gibt "time()" den aktuellen Timestamp aus:

http://php.net/manual/de/function.time.php

Den aktuellen Unix Timestamp kannst du aber auch direkt in SQL speichern, z.B.:

Code: Alles auswählen

UPDATE table_xy
SET time = UNIX_TIMESTAMP()
WHERE id = 1234;
Per Formular würde ich den Wert übrigens nicht übermitteln. Diesen kann das auswertende PHP-Script auch selbst ermitteln.

Benutzeravatar
frindly
Beiträge: 1085
Registriert: 23.10.2007 08:13:26
Wohnort: Recklinghausen

Re: Rechnen mit Datum und Uhrzeit in SQL

Beitrag von frindly » 12.11.2013 10:43:19

Ok
wenn ich den Timestamp abspeicher kann ich natürich leicht damit rechnen,
gehen - ankunft ist eine reine subtraktion, übrig bleiben die Sekunden der Anwesenheit.

Aber mein Ziel ist auch das ich z..b aus der Datenbank Abfragen nach Monat mache,
z.b. zeige mir alle Werte von 11/2013 und dafür bräuchte ich natürlich eine Wert
den ich durchsuchen kann.
Bietet hier die Datumsfunktion von SQL nicht bessere Möglichkeiten einen Select laufen zu lassen?

pferdefreund
Beiträge: 3799
Registriert: 26.02.2009 14:35:56

Re: Rechnen mit Datum und Uhrzeit in SQL

Beitrag von pferdefreund » 12.11.2013 10:55:19

In Postgresql geht das problemlos mit dem Feldtyp timestamp inter inverval. Auf die Art mache ich monatlich Laufzeitstatistiken von Z/OS- und SAP-Batch-Jobs. Da kann man auch per substr(feld::text,nn,nn) im where Monate usw auslesen, gruppieren....
Ob das in Mysql geht - keine Ahnung - ich ziehe Postgresql eh vor aber das ist Geschmackssache und ich verwende da halt auch gerne das High-Level-Interface per Precompiler für meine C-Programme wie z. B bei Oracle auch mit exec sql....

Benutzeravatar
4A4B
Beiträge: 962
Registriert: 09.11.2011 11:19:55
Kontaktdaten:

Re: Rechnen mit Datum und Uhrzeit in SQL

Beitrag von 4A4B » 12.11.2013 12:52:30

Bietet hier die Datumsfunktion von SQL nicht bessere Möglichkeiten einen Select laufen zu lassen?
Ja, du kannst auch die Datums- und Zeittypen von MySQL verwenden:

http://dev.mysql.com/doc/refman/5.1/de/ ... types.html

... und dann mit den Datums- und Zeitfunktionen selektieren:

http://dev.mysql.com/doc/refman/5.1/de/ ... tions.html

Unix Timestamp wäre halt die einfacherer Variante gewesen, wenn es dir nur um die Laufzeitberechnung gegangen wäre.

Antworten