我已经看着演员和转换,但我不能找到一个方法来做到这一点。 我需要四位数字转换为小时格式。 举例来说,0800将成为8点1530将成为15:30。 我不能用的功能,我使用的是系统间的CacheSQL。 有什么建议么? 提前致谢!
编辑:如果它是任何更方便,我可以仅通过划分四个数字一百到摆脱原来的1500,或8.30从0830.这是否转换为每小时15一样值:分钟的格式更容易?
我已经看着演员和转换,但我不能找到一个方法来做到这一点。 我需要四位数字转换为小时格式。 举例来说,0800将成为8点1530将成为15:30。 我不能用的功能,我使用的是系统间的CacheSQL。 有什么建议么? 提前致谢!
编辑:如果它是任何更方便,我可以仅通过划分四个数字一百到摆脱原来的1500,或8.30从0830.这是否转换为每小时15一样值:分钟的格式更容易?
对于CacheSQL,你可以这样做:
SELECT {fn TRIM(LEADING '0' FROM LEFT(col_name, 2) || ':' || RIGHT(col_name, 2)) }
FROM table_name
在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实现可能具有相似的功能。
在SQL Server早期版本的那些缺乏time
数据类型,只要使用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日与所需时间的一天。
好吧,如果是像甲骨文,你可能有与一试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 ...
阅读关于STR_TO_DATE()及其参数的DATE_FORMAT()函数下。