SimpleDateFormat日期轉化錯誤? 一個字段變更前多條記錄變更後也是多條,怎麼用sql拼到一起?

SimpleDateFormat日期轉化錯誤?

把2017年12月31日轉化爲2018-12-31
SimpleDateFormat f = new SimpleDateFormat("YYYY-MM-dd");
f.format(date);

把2017年12月31日轉化爲2018-12-31

正確寫法應該是:

SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd");

dateFormat(date, pattern[,language])用於將時間格式化爲期望的字符串,其中date可以是時間字符串,也可以是Date對象,pattern爲格式化參數,yyyy表示年,MM表示月,dd表示天數,HH表示小時,mm表示分鐘,ss表示秒.比如dateFormat("2006-07-04 12:12:12", "日期:yyyy-MM-dd HH:mm:ss") 將返回"日期:2006-07-04 12:12:12".

YYYY是小寫yyyy

 

一個字段變更前多條記錄變更後也是多條,怎麼用sql拼到一起?

具體如下:

先不管這麼多,我先把變更前變更後都left join過去

結果發現是這樣的

然後想到應該使用全外連接full join,但是mysql沒有full join,需要通A  left join B union A right join B 實現

但是這個A對應D和B對應E的條件是什麼呢?A和D並沒有直接關係,請教了一下同事,先把ABC和DE分別排序,然後序號相等的連接起來,

生成序號的sql爲:ROW_NUMBER () OVER () AS XUHAO,

但是我發現我一個sql裏有很多人員,而且同一個人員會有不同日期的變更,單純的按照變更前變更後生產序號已經不能滿足了

然後去百度了一下sql的over這個關鍵字發現他後面還有兩個屬性

ROW_NUMBER () OVER (partition by coloumn1,order by coloumn2) AS XUHAO,

含義爲按column1指定的字段進行分組,或者說按字段column1的值進行分組排序。

按column2 進行排序

然後我根據我的人員編號的變更日期對數據集進行排序,

ROW_NUMBER () OVER (partition by 人員編號,變更日期,order by 變更日期) AS XUHAO,

然後再全連接

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章