21
Dec
Tags: Firebird | 4 Comments »
TIMESTAMP to STRING + ořez na Firebirdu/InterBase
Nedávno se v diskuzi objevil dotaz, jak překlopit datum a čas na string, a zároveň část uříznout (konec – setiny, vteřiny, atp.). Vzpomněl jsem si na trik Ivana Přenosila s přiřazením a vyjímkou. Stačilo tedy napsat proceduru:
SET TERM ^ ; CREATE PROCEDURE TRUNCDATE (DATETIME VARCHAR(24)) RETURNS (RESULT VARCHAR(16)) AS BEGIN result = ''; result = datetime; --error, but the truncated value is assigned (I. Prenosil's tip) WHEN ANY DO EXIT; --catch error END^ SET TERM ; ^
A bylo po problému. takto můžu ořezat co se mi zachce a jak se mi zachce. Stačí vyzkoušet:
execute procedure TruncDate(current_timestamp);



There's 4 Comments So Far
December 22nd, 2005 at 09:22
a to Firebird nema nejakou funkci na vraceni podretezce?
SUBSTRING(’01.01.2005 12:33:45′,1,16)
December 22nd, 2005 at 12:51
Ma (od FB 1.0), ale tohle je mnohem variabilnejsi. Muzes si pritom udelat i nejake jine silenosti.
Hlavne toto funguje i na IB, kde (myslim) substring neni.
December 22nd, 2005 at 17:33
No to by mne zajimalo v cem je to variabilnejsi?
Silene to je samo o sobe dost
Pokud to nekde neni tak to chapu, ale jinak mi to prijde silne zvrhle (uz jen to ze dojde k vyjimce, ktera se pak osetri musi nutne zanaset zbytecnou rezii).
December 22nd, 2005 at 18:53
Jo to je. Silene je to dost. Ale na IB jinou sanci nemas (jedine UDF).
Variabilnejsi je to, protoze si tam muzes pridat treba vypocet kondiciogramu
coz se substringem neudelas.
Share your thoughts, leave a comment!