Η προγραμματιστική λογική είναι εξαιρετική αρκεί να ακολουθεί το χρυσό κανόνα της απλότητας.
Note
Όσοι με γνωρίζουν από το παρελθόν ξέρουν καλά ότι ήμουν είμαι και θα είμαι προγραμματιστής που απλά βαρέθηκε να γράφει φόρμες και αποφάσισε να ασχοληθεί με τα δεδομένα.
Τόσα χρόνια ακούω ότι η T-SQL έχει περιορισμένες δυνατότητες.
Ίσως να είναι αλήθεια αλλά είναι;
Common approach
Βλέποντας κάποιου τον κώδικα είδα ότι για να μετατρέψει ένα αριθμό σε ώρα με format HH:MM:SS:MI εκτελούσε το παρακάτω και μάλιστα το είχε βάλει σε UDF για το καλεί στα queries του.
SQL Script
declare @t int = 1234567.89;
SELECT CONCAT(
RIGHT('0' + CAST(@t/(1000*60*60) AS VARCHAR(2)),2), ':', -- Hrs
RIGHT('0' + CAST((@t%(1000*60*60))/(1000*60) AS VARCHAR(2)),2), ':', -- Mins
RIGHT('0' + CAST(((@t%(1000*60*60))%(1000*60))/1000 AS VARCHAR(2)),2), '.', -- Secs
((@t%(1000*60*60))%(1000*60))%1000 -- Milli Secs
) AS [hh:mm:ss.ms]
GO
Simple approach
Αντί για αυτό μπορούμε απλά να κάνουμε τα παρακάτω
SQL Script
declare @t int = 1234567.89;
select 'Milliseconds to Time' as conversion, convert(time(2),dateadd(MILLISECOND,@t,0),14) as 'HH:MM:SS:MI';
select 'Seconds to Time' as conversion, convert(time(2),dateadd(SECOND,@t,0),14) as 'HH:MM:SS:MI';
select 'Minutes to Time' as conversion, convert(time(2),dateadd(MINUTE,@t,0),14) as 'HH:MM:SS:MI';
Conversion Results
conversion |
HH:MM:SS:MI |
Milliseconds to Time |
00:20:34.57 |
Minutes to Time |
08:07:00 |
Seconds to Time |
06:56:07 |
Δεν είναι απλούστερο; και δεν είναι string!
//Antonios Chatzipavlis