我正在使用一个查询从一个名为dual的虚拟表生成时间戳。但是,从表中返回的日期似乎无效。
select String(max(max_lid_date)) as prev_reqline_max_lid_date,from_unixtime(unix_timestamp(),'YYYY-MM-DD hh:mm:ss') as job_start_date,from_unixtime(unix_timestamp(),'YYYY-MM-DD 00:00:01') as pull_to_date from xxcss_ktn_req_line_detail_log;
查询结果:
prev_reqline_max_lid_date job_start_date pull_to_date
1970-01-01 00:00:00 2015-12-349 01:47:52 2015-12-349 00:00:01
双表结构:
hive (smart_advisor)> desc dual;
OK
col_name data_type comment
id string
从中检索日期的配置单元表的结构
hive (smart_advisor)> desc xxcss_ktn_req_line_detail_log;
OK
col_name data_type comment
job_start_date timestamp
job_end_date timestamp
pull_from_date timestamp
pull_to_date timestamp
min_lid_date timestamp
max_lid_date timestamp
record_count bigint
需要帮助解决pull_to_date和job_start_date列中的日期问题。这是我工作的日志表。
表xxcss_ktn_req_line_detail_log只包含一条记录
hive (smart_advisor)> select * from xxcss_ktn_req_line_detail_log;
OK
xxcss_ktn_req_line_detail_log.job_start_date xxcss_ktn_req_line_detail_log.job_end_date xxcss_ktn_req_line_detail_log.pull_from_date xxcss_ktn_req_line_detail_log.pull_to_date xxcss_ktn_req_line_detail_log.min_lid_date xxcss_ktn_req_line_detail_log.max_lid_date xxcss_ktn_req_line_detail_log.record_count
NULL NULL NULL NULL NULL 1970-01-01 00:00:00 0
答案 0 :(得分:1)
您传递的格式字符串错误。 特别是,您使用的是资本D(一年中的一天)而不是小写的“d”。 您可能还需要大写字母H而不是小写字母h,因为小写字母是上午12点/下午时间。
尝试改为
hive> select from_unixtime(unix_timestamp(),'yyyy-MM-dd 00:00:01')
from single_customer;
OK
2015-12-15 00:00:01
hive> select from_unixtime(unix_timestamp(),'yyyy-MM-dd HH:mm:ss')
from single_customer;
OK
2015-12-15 08:25:22
请注意'yyyy-MM-dd HH:mm:ss'是默认设置,因此您可以使用
hive> select from_unixtime(unix_timestamp()) from single_customer;
OK
2015-12-15 08:27:16
Hive当然使用Java作为日期格式,因此您应该检查:http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html