SimpleDateFormat日期转化错误? 一个字段变更前多条记录变更后也是多条,怎么用sql拼到一起?

18 篇文章 0 订阅
3 篇文章 0 订阅

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,

然后再全连接

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值