2015-09-09 26 views
6

Làm cách nào để truyền chuỗi có định dạng 'dd-MM-yyyy' sang loại ngày cũng có định dạng 'dd-MM-yyyy' trong Hive?Chuỗi ký tự Hive cho đến ngày dd-MM-yyyy

cái gì đó dọc theo dòng:

CAST('12-03-2010' as date 'dd-mm-yyyy') 
+1

Không có thứ như "loại ngày có định dạng cụ thể". Loại DATE được lưu dưới dạng nhị phân và được hiển thị theo mặc định ở định dạng ISO; nếu bạn muốn hiển thị nó ở định dạng khác, bạn phải định dạng nó một cách rõ ràng, trên từng trường hợp cụ thể. –

Trả lời

11

thử:

from_unixtime(unix_timestamp('12-03-2010' , 'dd-MM-yyyy')) 
+11

Đó vẫn là * Chuỗi *, với định dạng * TimeStamp *. Để đưa nó vào * Date * bạn phải bọc nó trong 'cast (to_date (from_unixtime (unix_timestamp (STR_DMY, 'dd-MM-yyyy'))) làm ngày)' –

+0

Và có, tôi ước có một cách tốt hơn để thao tác ngày trong Hive: - / –

1

AFAIK bạn phải định dạng lại bạn Chuỗi trong định dạng ISO để có thể đúc nó như là một ngày :

cast(concat(substr(STR_DMY,7,4), '-', 
      substr(STR_DMY,1,2), '-', 
      substr(STR_DMY,4,2) 
      ) 
    as date 
    ) as DT 

Để phân phối đặt một ngày như một Chuỗi với định dạng cụ thể, thì đó là cách khác xung quanh, trừ khi bạn có Hive 1.2+ và có thể sử dụng date_format()

=> bạn đã check the documentation bằng cách này?

Các vấn đề liên quan