取消
顯示的結果
而不是尋找
你的意思是:

如何從十進製轉換列類型在sparksql日期

pepevo
新的貢獻者三世

我需要列類型從十進製轉換為日期在sparksql格式不是yyyy-mm-dd ?

一個表包含列數據聲明為十進製(38歲,0)和數據名稱格式,我無法在databrick筆記本上運行sql查詢。

我曾經嚐試過to_date (column_name) = date_sub(當前日期(),1),它不工作。我試過了,”from_unixtime (cast (column_name字符串),“yyyy-MM-dd”)或to_date (cast (unix_timestamp (column_name, yyyy-MM-dd”),他們都沒有工作。From_unixtime (cast (column_name字符串),“yyyy-mm-dd”,它給我正確的格式但這些數據表中不存在。

我怎麼能把這列類型日期在sql ?

1接受解決方案

接受的解決方案

User16857282152
貢獻者

您可以運行

“描述表;”一列的數據類型。

我跑了幾個例子,發現下麵的工作,我認為你可能隻是一些格式問題。

探索其中的一些例子,看看你可以找到你的錯誤。

記得刪除你創建任何表如果你是在一個共享工作區。

創建一個表與小數名為id列。

創建表temp6(選擇20140419.00 id);

描述temp6;

——顯示它確實是一個小數

選擇,注意sql處理int浮動

%的sql select * from temp6 id = 20140419;

也為你投下字符串

%的sql select * from temp6 id =“20140419”;

相同的整數使用嗎

創建表temp7(選擇20140419 id);

這最後一個例子可能會讓你接近,

select *從temp6 id <替換(cast(當前日期()作為字符串),“-”);

分解,通過運行

選擇當前日期()

然後把字符串

選擇演員(當前日期()作為字符串);

然後把破折號

選擇替換((當前日期()作為字符串),“-”)

然後在where子句中使用的,但根據需要修改以適合您的邏輯。

注意我的工作當我整數或小數相比一個字符串,sparkSQL投。

在原帖子查看解決方案

10個回答10

User16857282152
貢獻者

這是一個工作示例,

在SQL中,

創建表temp1(選擇20010101.00日期);

——這將創建一個表與單個列命名為“日期”,小數的數據類型。

——驗證運行“描述temp1”;

to_date函數接受一個字符串作為輸入,所以首先把十進製轉換字符串。

選擇演員從temp1(日期字符串);

一旦你有了一個字符串可以推動一個日期,

選擇to_date(鑄造(日期字符串),“名稱”)從temp1日期;

你可以做同樣的使用dataframe api。

df1 =火花。sql(“選擇20010101.00日期”)

轉換為字符串

df2 = df1.select (df1.date.cast(“字符串”))

下降的小數

從pyspark.sql。功能導入substring_index

df3 = df2.select (substring_index (df2。目前為止,”。',1).alias(日期))

將字符串轉換為日期

從pyspark.sql。功能導入to_date

df4 = df3。選擇(to_date(“日期”、“名稱”).alias(日期))

pepevo
新的貢獻者三世

謝謝你的輸入。

我試圖從表中選擇列本身你顯示是的,我獲得正確的格式轉換從名稱到yyyy-MM-dd輸出,但是當我把它在where子句如下:
select count(*)從table_name to_date ((column_name字符串),'名稱')= date_sub(當前日期(),1));

我的輸出是0,而不是超過500000條記錄。

User16857282152
貢獻者

這看起來很奇怪,

相反的,有接受過你想比較日期轉換為一個字符串,然後比較

select *從表(列把字符串)= date_format (date_sub(當前日期(),1),“名稱”)

pepevo
新的貢獻者三世

我和輸出仍= 0。

* column_name load_dt_id

select count(*)從table_name to_date ((load_dt_id字符串),'名稱')= date_format (date_sub(), 1), '名稱');

有7億條記錄和計數不能0如果load_dt_id sysdate 1。

從甲骨文數至少5億如果load_dt_id sysdate 1。

歡迎來到磚社區:讓學習、網絡和一起慶祝

加入我們的快速增長的數據專業人員和專家的80 k +社區成員,準備發現,幫助和合作而做出有意義的聯係。

點擊在這裏注冊今天,加入!

參與令人興奮的技術討論,加入一個組與你的同事和滿足我們的成員。

Baidu
map