


SQL server, převod datového typu v SELECT
Dobrý den,
prosím o radu jak převést číslo v desítkové soustavě do šedesátkové.
Příklad
2,06666666666669 = 2:04 hod
-0,116666666666666 = -0:07 hod
2,56666666666667 = 2:34 hod
zkoušel jsem použít funkce CAST a CONVERT, ale nikdy se mi z toho nepodařilo dostat kýžený výsledek.
Poradíte prosím?
Najlepšie bude, keď formátovanie toho čísla spravíš v aplikácií, ktorá ho prezentuje používateľovi. Robiť to priamo v SQL príkaze je zbytočne zložité.
Ak by si to predsa len chcel robiť priamo na úrovni SQL, tak všetky menej zložité riešenia závisia od konkrétneho typu databázového stroja, ktorý si zabudol spomenúť.
Omlouvám se za opomenutí.
Jedná se o SQL Server 2005 Express.
Data jsou tak uložené. Je to hotová aplikace kterou jsme koupili. Já z toho potřebuji "jen" vyexportovat jeden výstup a právě požadovaný údaj o době je uložen v desetinném tvaru ve float.
Měly by to zvládnout funkce CAST and CONVERT, ale v tom popisu je to tak moc precizně popsané, že tomu už nerozumím. Konkrétně mě zajímá from float to datetime.
Problém je v tom, že pro CAST(Hodiny AS datetime) např. z 0,483333333333336 dostanu 4.1.1900 15:36:00, žádoucí je 0:29 hod. Přitom Hodiny jsou ve float. A pro CONVERT, kterou bych si vytáhl hh:mm už tak není správný výstup.
Když to vyexportuji do Excelu, tak ani tam jsem funkci, která by to převedla nenašel.
Na prevod takého čísla na typ datetime stačí jednoduchá matematika, napr. pre čas 0,483333333333336:
Problémom je, že výsledok je datetime, takže štandardné funkcie pre formátovanie dátumu stačia len pre hodnoty z intervalu <0, 24).
Môžeš vyskúšať niečo takéto (za @x dáš názov stĺpca) a ak ti to bude vyhovovať, tak si to definuj ako funkciu, nech sa tie selecty dajú potom čítať:
Pokud by to někdy někomu mohlo pomoci, tak tady je řešení: