Hive 在配置单元中的变量上运行regrex_replace

Hive 在配置单元中的变量上运行regrex_replace,hive,Hive,我正在使用以下命令将配置单元中的日期字符串从2017-02-21T11:28:36更改为2017-02-21 11:28:36 SELECT regexp_replace('2017-02-21T11:28:36', 'T', " "); 输出正确,如2017-02-21 11:28:36。现在,我的输入日期字符串存储在READ\u START\u date变量中 hive>SET READ_START_DATE;

我正在使用以下命令将配置单元中的日期字符串从
2017-02-21T11:28:36
更改为
2017-02-21 11:28:36

SELECT regexp_replace('2017-02-21T11:28:36', 'T', " ");
输出正确,如
2017-02-21 11:28:36
。现在,我的输入日期字符串存储在
READ\u START\u date
变量中

hive>SET READ_START_DATE;                                                   
READ_START_DATE=2017-02-21T11:28:36 
现在我正在运行这个命令

SELECT regexp_replace('${READ_START_DATE}', 'T', " ");  
此命令的输出是
${READ\u S AR\u DA E}


这是有道理的,但我需要对变量运行
regrex\u replace
命令。我该怎么做?

${hiveconf:READ\u START\u DATE}


尝试使用双引号

SELECT regexp_replace("${READ_START_DATE}", 'T', " "); 
它使用的是不同的环境变量,但不确定为什么不使用“READ\u START\u DATE”,dudu有什么想法吗

hive (default)> set system:java.vm.version;
system:java.vm.version=24.65-b04
hive (default)> select regexp_extract("${system:java.vm.version}",'.*?-(.*)');
OK
_c0
b04
Time taken: 0.076 seconds, Fetched: 1 row(s)

它使用了不同的变量,因此建议使用它,无论如何,上面的答案非常通用,下面是我的try-hive(默认)>set-system:java.vm.version;system:java.vm.version=24.65-b04配置单元(默认)>选择regexp_extract(${system:java.vm.version},'.-(.*));正常_C0B04所用时间:0.076秒,获取:1行
hive (default)> set system:java.vm.version;
system:java.vm.version=24.65-b04
hive (default)> select regexp_extract("${system:java.vm.version}",'.*?-(.*)');
OK
_c0
b04
Time taken: 0.076 seconds, Fetched: 1 row(s)