Cast and Convertを調べましたが、これを行う方法が見つかりません。4桁を1時間形式に変換する必要があります。たとえば、0800は8:00になり、1530は15:30になります。関数を使用できません。InterSystemのCacheSQLを使用しています。助言がありますか?前もって感謝します!
編集:もっと便利な場合は、4桁を100で割って、元の1500から15、0830から8.30などの値を取得できます。これにより、時間:分形式への変換が簡単になりますか?
Cast and Convertを調べましたが、これを行う方法が見つかりません。4桁を1時間形式に変換する必要があります。たとえば、0800は8:00になり、1530は15:30になります。関数を使用できません。InterSystemのCacheSQLを使用しています。助言がありますか?前もって感謝します!
編集:もっと便利な場合は、4桁を100で割って、元の1500から15、0830から8.30などの値を取得できます。これにより、時間:分形式への変換が簡単になりますか?
CacheSQLの場合、これを行うことができます。
SELECT {fn TRIM(LEADING '0' FROM LEFT(col_name, 2) || ':' || RIGHT(col_name, 2)) }
FROM table_name
そうですね、Oracleのようなものであれば、このto_date()
関数を試してみるとよいでしょう。
詳細はこちらをご覧ください。
例:
SELECT to_date(yourColumn, 'HH24MI') FROM ...
編集(なぜ?コメントを参照):必要に応じて(私は実際にはOracleに精通していません)、TIME()のような別の関数をラップすることができます。
SELECT TIME(to_date(yourColumn, 'HH24MI')) FROM ...
TIME()について詳しくは、こちらをご覧ください。
</EDIT>
MySQLでは、同等のSTR_TO_DATE()
関数は次のようになります。
SELECT STR_TO_DATE(yourColumn, '%H%i') FROM ...
SQL Server 2008では、次のようなデータが与えられます
create table #data
(
HHMM int not null ,
)
insert #data values ( 0800 )
insert #data values ( 0815 )
insert #data values ( 1037 )
insert #data values ( 2359 )
あなたは言うことができます:
select * ,
strTime = right( '0' + convert(varchar, HHMM / 100 ) , 2 )
+ ':'
+ right( '0' + convert(varchar, HHMM % 100 ) , 2 ) ,
myTime = convert(time ,
right( '0' + convert(varchar, HHMM / 100 ) , 2 )
+ ':'
+ right( '0' + convert(varchar, HHMM % 100 ) , 2 ) ,
120
)
from #data
他のSQL実装にも同様の機能がある可能性があります。
time
データ型がない以前のバージョンのSQLServerではdatetime
、次のように使用します。
select * ,
strTime = right( '0' + convert(varchar, HHMM / 100 ) , 2 )
+ ':'
+ right( '0' + convert(varchar, HHMM % 100 ) , 2 ) ,
myTime = convert(datetime,
right( '0' + convert(varchar, HHMM / 100 ) , 2 )
+ ':'
+ right( '0' + convert(varchar, HHMM % 100 ) , 2 ) ,
120
)
from #data
datetime
希望する時刻で1900年1月1日の値を取得します。
left( case when (EndTime / 100) < 10 then ('0'+ convert(varchar, EndTime / 100 )) else convert(varchar, EndTime / 100 ) end, 2 )
+ ':'
+ right( '0' + convert(varchar, EndTime % 100 ) , 2 )