在配置单元中获取子字符串

deikduxw  于 2021-06-27  发布在  Hive
关注(0)|答案(2)|浏览(335)

我正在尝试从配置单元中获取字符串的子字符串。我有这样一个字符串:2017-06-05 09:06:32.0
我想要的是从小时开始的前两位数,也就是09。我用这个命令得到了整整一个小时:

SELECT SUBSTR(hora,11) AS subhoras FROM axmugbcn18.bbdd WHERE hora =  '2017-06-05 09:06:32.0'

命令的结果是:09:06:32.0
为了只得到09,我尝试了以下命令:

SELECT REGEXP_EXTRACT(hora,'\d\d') AS subhoras FROM axmugbcn18.bbdd WHERE hora = '2017-06-05 09:09:32.0'

但结果是空白的。
我怎样才能只检索到小时的两位数?
谢谢

kb5ga3dv

kb5ga3dv1#

请尝试以下操作:

select 
'2017-06-05 09:06:32.0' as t, 
hour('2017-06-05 09:06:32.0'),                               -- output: 9
from_unixtime(unix_timestamp('2017-06-05 09:06:32.0'),'HH')  -- output: 09
from table_name;

你可以试试 hour 或者 unixtimestamp 以得到期望的结果。
希望这有帮助:)

luaexgnf

luaexgnf2#

有几种方法可以提取 hourstimestamp 价值观。
1.使用子串函数:

select substring(string("2017-06-05 09:06:32.0"),12,2);
+------+--+
| _c0  |
+------+--+
| 09   |
+------+--+

2.使用regexp\u提取物:

select regexp_Extract(string("2017-06-05 09:06:32.0"),"\\s(\\d\\d)",1);
+------+--+
| _c0  |
+------+--+
| 09   |
+------+--+

3.使用时间:

select hour(timestamp("2017-06-05 09:06:32.0"));
+------+--+
| _c0  |
+------+--+
| 9    |
+------+--+

4.从\ unixtime使用:

select from_unixtime(unix_timestamp('2017-06-05 09:06:32.0'),'HH');
+------+--+
| _c0  |
+------+--+
| 09   |
+------+--+

5.使用日期格式:

select date_format(string('2017-06-05 09:06:32.0'),'hh');
+------+--+
| _c0  |
+------+--+
| 09   |
+------+--+

6.使用拆分:

select split(split(string('2017-06-05 09:06:32.0'),' ')[1],':')[0];
+------+--+
| _c0  |
+------+--+
| 09   |
+------+--+

相关问题