INT(N) ZEROFILL in SELECT funktioniert nicht, mysql 5.1.43

HardboilW

Neuer Benutzer
Beiträge
3
Hallo

Bin ganz neu hier. Gesucht habe ich schon, nicht nur hier im Forum, bin aber nicht fündig geworden.

Da mysql ver. 5.1.43 kein Millisekunden unterstützt, würde ich gerne folgenden Workaround implementieren:

Tabelle TBL:
|STORAGETIME | decimal(13,0) | NO | | NULL | |

Die letzten 3 Stellen in STORAGTIME sind die Millisekunden.

Mein fehlerhaftes SELECT sieht dann so aus (Syntaxfehler, nur sehe ich nicht wo):
SELECT (STORAGETIME%1000) UNSIGNED INT(3) ZEROFILL FROM TBL;

Aber folgendes SELECT funktioniert, nur sind dann die Werte ohne führende Nullen:
SELECT (STORAGETIME%1000) FROM TBL;

Frage: Kann man UNSIGNED INT(N) ZEROFILL in SELECT benutzen ohne an der Tabellendefinition herumzuschrauben?

Danke,
HardboilW
 
Werbung:

akretschmer

Datenbank-Guru
Beiträge
9.423
Hallo

Bin ganz neu hier. Gesucht habe ich schon, nicht nur hier im Forum, bin aber nicht fündig geworden.

Da mysql ver. 5.1.43 kein Millisekunden unterstützt, würde ich gerne folgenden Workaround implementieren:

Tabelle TBL:
|STORAGETIME | decimal(13,0) | NO | | NULL | |

Die letzten 3 Stellen in STORAGTIME sind die Millisekunden.

Mein fehlerhaftes SELECT sieht dann so aus (Syntaxfehler, nur sehe ich nicht wo):
SELECT (STORAGETIME%1000) UNSIGNED INT(3) ZEROFILL FROM TBL;

Aber folgendes SELECT funktioniert, nur sind dann die Werte ohne führende Nullen:
SELECT (STORAGETIME%1000) FROM TBL;

Frage: Kann man UNSIGNED INT(N) ZEROFILL in SELECT benutzen ohne an der Tabellendefinition herumzuschrauben?

Danke,
HardboilW


Prinzipiell würde ich Dir raten, entweder eine MySQL-Inkarnation zu nutzen, die das kann, oder aber eine Datenbank, die das und mehr gleich richtig unterstützt.

Die Ausgabe eines INT mit führenden Nullen ist lediglich eine Formsache - da kennt ganz sicher auch MySQL Möglichkeiten der Formatierung. Dein erster Versuch mit der Syntaxmeldung könntest Du vielleicht umschreiben als CAST, also Dein INT oder DECIMAL, was auch immer, in Dein 'UNSIGNED INT(3) ZEROFILL' mittels CAST umschreiben. Aber mit MySQL kenne ich micht nicht wirklich aus.
 

BerndB

Datenbank-Guru
Beiträge
311
Hallo,

mit den führenden 0 ist ganz einfach

LPAD ist da das Mittel der Wahl

select lpad(FIELD,9,'0') FROM TABLE;

und schon haste was du möchtest

Gruss

BerndB
 
Werbung:
Oben