2018/1/24

1.stream进行获取List中对象的属性的最大值的对象

获取List<Object>中object的属性的最大值的一个Object

//获取jsonArrayAll中最大的key,用key自增进行初始化没有keyjson对象
Integer maxKey = 0;
if(jsonArrayAll.size()>0){
    Object maxObj = jsonArrayAll.stream().max((o1, o2) -> {
        Integer o1Key = (Integer)((JSONObject) o1).get("key");
        Integer o2Key = (Integer)((JSONObject) o2).get("key");
        if(o1Key>o2Key){return 1;}
        if (o1Key<o2Key){return -1;}
        else{return 0;}
    }).get();
    maxKey = (Integer)((JSONObject) maxObj).get("key");
}
2.++i与i++

a=i++;//将i的值赋值给a,即a=i;然后再执行i=i+1;
也就是【a=i++;】与【a=i; i=i+1;】等价。
a=++i;//将i+1的值赋给a,即a=i+1;然后再执行i=i+1;
也就是【a=++i;】与【a=i+1;i=i+1;】等价。

3.两个List<Object>进行取出出差集

List<Object> newTbifm07List = stockList.stream().filter(
        e -> !(tbifm07EntityList.stream().map(Tbifm07::getShelfNo).collect(Collectors.toList())).contains(e.getShelfNo()))
        .collect(Collectors.toList());

<think>好的,我现在需要帮用户解决Oracle数据库中将日期格式从'2018/11/09 14:47:03'转换为'2018-11-09'的问题。首先,我得确认用户的具体需求是什么。用户提到的原始格式是'YYYY/MM/DD HH24:MI:SS',想要转换为'YYYY-MM-DD',也就是只保留日期部分,并且改变分隔符为短横线。 接下来,我需要回忆Oracle中处理日期格式转换的函数。通常,处理日期转换会用到TO_CHAR和TO_DATE函数。用户可能已经存储了日期类型的数据,或者字段本身是字符串类型。如果字段是DATE类型,直接使用TO_CHAR函数转换成指定格式的字符串即可。例如,TO_CHAR(date_column, 'YYYY-MM-DD')。但如果字段原本是字符串类型存储的日期,比如VARCHAR2,那么可能需要先用TO_DATE将其转换为DATE类型,再转回字符串,以确保格式正确。 另外,用户提供的示例引用中有一个错误的写法:to_char(to_Date(sysdate, 'DD-MON-YY'), 'YYYY-MM-DD HH:MM:SS'),这里的问题在于sysdate已经是DATE类型,不需要再用TO_DATE转换,直接TO_CHAR(sysdate, '格式')即可。这可能是个常见的错误,用户需要注意避免。 然后,考虑用户的具体情况。如果原始数据是字符串类型,比如存储为'2018/11/09 14:47:03',正确的转换步骤应该是先用TO_DATE按原格式转换为DATE类型,再用TO_CHAR转为目标格式。例如:TO_CHAR(TO_DATE(string_column, 'YYYY/MM/DD HH24:MI:SS'), 'YYYY-MM-DD')。这样就能确保即使原数据是字符串,也能正确解析并转换格式。 另外,用户可能需要修改表的字段,将原有的字符串类型改为DATE类型,或者在查询时进行转换。如果数据量较大,可能需要考虑性能问题,但一般来说,这种转换在Oracle中处理效率还是可以的。 还需要注意日期格式中的元素是否正确,比如小时应该用HH24表示24小时制,分钟是MI,月份是MM,避免混淆。用户提供的示例引用中有提到kettle转换错误的问题,可能是因为格式不匹配导致转换失败,所以确保格式字符串准确无误非常重要。 最后,总结解决方案:使用TO_CHAR和TO_DATE组合,或者直接TO_CHAR(如果字段已经是DATE类型),并给出示例SQL语句。同时提醒用户注意原字段的数据类型,以及格式字符串的正确性,避免常见错误。</think>要将Oracle数据库中的日期格式从$'2018/11/09 14:47:03'$转换为$'2018-11-09'$,可以通过以下步骤实现: ### 1. 直接转换(DATE类型字段) 如果字段本身是DATE类型,直接使用`TO_CHAR`函数: ```sql SELECT TO_CHAR(your_date_column, 'YYYY-MM-DD') FROM your_table; ``` 这会保留日期部分并按新格式输出[^1] ### 2. 字符串转日期再转字符串(VARCHAR2类型字段) 如果原始数据是字符串类型,需要先转换为DATE类型再格式化: ```sql SELECT TO_CHAR( TO_DATE(your_string_column, 'YYYY/MM/DD HH24:MI:SS'), 'YYYY-MM-DD' ) FROM your_table; ``` ### 关键注意事项 - 时间部分处理:若需要完全移除时间部分,格式化时不带时间参数即可 - 格式元素必须严格对应: - `YYYY`:四位数年份 - `MM`:两位月份 - `DD`:两位日期 - `HH24`:24小时制小时 - `MI`:分钟 - `SS`:秒钟 ### 示例对比 原始数据 | 转换语句 | 结果 --- | --- | --- DATE类型 | `TO_CHAR(sysdate, 'YYYY-MM-DD')` | $2023-08-15$ VARCHAR2类型 | `TO_CHAR(TO_DATE('2018/11/09', 'YYYY/MM/DD'), 'YYYY-MM-DD')` | $2018-11-09$ ### 常见错误规避 - 避免错误格式嵌套:如`TO_DATE(sysdate)`是冗余操作,因为`sysdate`本身返回DATE类型[^1] - 时区处理:若涉及时区转换需要额外参数`AT TIME ZONE` - 格式元素大小写敏感:`mm`表示分钟,`MM`表示月份
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值