[MySQL] Zeit Microsekundengenau auslesen - wie?

Icy

*
ID: 187087
L
28 April 2006
385
52
Ich hab folgenden Fall: Ich möchte gern mit MySQL 5.0.45 die Zeit auf Datenbankebene (ohne Hilfe von PHP o.Ä.) Microsekundengenau genau auslesen und dann verwerten.
In der Anleitung von MySQL seh ich zwar Funktionen und Konstanten, die sich "Microtime" nennen und Funktionen, um mit Microsekunden zu rechnen, aber ich schaffe es irgendwie nicht, die aktuelle Uhrzeit microsekundengenau auszulesen :-?
Wenn ich SELECT now() eingebe, erhalte ich "nur" ein sekundengenaues Ergebnis, bei SELECT microsecond() erhalte ich ein Syntaxfehler, wenn ich SELECT microsecond(now()) ausführe kommt immer nur "0" raus, wogegen der Befehl SELECT microsecond('2007-10-02 15:13:16.958473') mit diesen festen Wert als Eingabe die Zahl 958473 ausspuckt

Seh ich den Wald vor lauter Bäumen nicht oder geht es wirklich nicht mit MySQL?
 
> wenn ich SELECT microsecond(now()) ausführe kommt immer nur "0" raus

Also ich habe noch nie mit Microsekunden in mySQL gearbeitet, aber meinem Verständnis nach, wenn Du auch bei "SELECT NOW() + 0" keine Microsekundenangabe hast unterstützt das Deine Plattform vielleicht nicht. Habe in der Doku aber eben auf die schnelle auch nichts darüber gefunden. Auch im Beispiel wird nur "20071215235026.000000" angegeben.

Wenn Du da weiterkommst würde mich das auch interessieren :>
 
In der Doku steht
Returns the microseconds from the time or datetime expression expr as a number in the range from 0 to 999999.

mysql> SELECT MICROSECOND('12:00:00.123456');
-> 123456
mysql> SELECT MICROSECOND('1997-12-31 23:59:59.000010');
-> 10

Also must Du wie Eckieck schon schrieb:
PHP:
SELECT MICROSECOND(NOW()+0) AS `microsecond`;
nutzen, dann sollte es gehen.
lt. Doku dazu:
SELECT NOW() + 0;
-> 20071215235026.000000
 
Keine Chance :(
Code:
...
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.0.45-community-nt MySQL Community Edition (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> use test;
Database changed
mysql> SELECT sysdate();
+---------------------+
| sysdate()           |
+---------------------+
| 2007-12-07 21:35:44 |
+---------------------+
1 row in set (0.03 sec)

mysql> SELECT now()+0;
+-----------------------+
| now()+0               |
+-----------------------+
| 20071207213607.000000 |
+-----------------------+
1 row in set (0.03 sec)

mysql>
mysql> SELECT MICROSECOND(NOW()+0) AS `microsecond`;
+-------------+
| microsecond |
+-------------+
|           0 |
+-------------+
1 row in set (0.05 sec)

mysql>
Nix da mit Microsekunden :(

Scheint bei mir gar nicht zu gehen, oder: ab welcher Plattform würde es gehen? Oder noch jemand mit einem neuen Vorschlag?
 
NOW()+0 ist ja auch quatsch... dadurch ändert sich nur die darstellung, aber nicht der Wert den NOW() zurückgibt.

Was ist eigentlich der sinn der Sache? Zuwas braucht man Mircrosekunden in der Datenbank?
 
Mit dem "Quatsch" lässt sich aber nachvollziehen warum bei microsecond(now()) von Icy immer 0 rauskam ;)