c# - 在我的表日期订单以错误的方式插入
问题描述
如果我插入开始日期 = 02-02-2018 和结束日期 = 05-02-2018。
目前我在表中的数据如下所示:(一次性插入)
1. 02-02-2018 05-02-2018
2. 03-02-2018 05-02-2018
3. 04-02-2018 05-02-2018
但我希望它看起来像这样:
1. 02-02-2018 03-02-2018
2. 03-02-2018 04-02-2018
3. 04-02-2018 05-02-2018
解决方案
您已经从 start_date 循环到 end_date。对于 to_date 列,使用start_date + level
:
select
TO_CHAR((to_date(IP_START_DATE,'DD-MM-YYYY HH24:MI:SS')+ (level-1)),'DD-MM-YYYY'),
TO_CHAR(to_date(IP_START_DATE,'DD-MM-YYYY HH24:MI:SS') + level,'DD-MM-YYYY') ,
IP_MATERIAL_TYPE,
IP_BRM_LIST,
IP_PLAN_CONSUMPTION,
IP_YARD_NO,
IP_USER_ID,
IP_USER_IP,
SYSDATE
FROM
dual
CONNECT BY
level <= to_date(IP_END_DATE,'DD-MM-YYYY HH24:MI:SS')-to_date(IP_START_DATE,'DD-MM-YYYY HH24:MI:SS')+1;
更新:假设列的格式material
是固定的,并且将类似于300T
,500A
等40F
,以下查询将在天数之间平均分配它。
SELECT to_number(regexp_substr('300T', '^\d+'))/(TO_DATE('05-02-2018', 'DD-MM-YYYY') - TO_DATE('02-02-2018', 'DD-MM-YYYY')) ||
regexp_substr('300T', '[A-Z]') as material
FROM dual;
输出:
MATERIAL
--------
100T
使用您的列名进行计算将如下所示:
to_number(regexp_substr(material, '^\d+'))/(TO_DATE(IP_END_DATE, 'DD-MM-YYYY') - TO_DATE(IP_START_DATE, 'DD-MM-YYYY')) || regexp_substr(material, '[A-Z]')
推荐阅读
- expo - React-Native: How to include location details while capturing the image using expo-camera
- visual-studio-code - 问题:VSCode DefinitionProvider 每次在新选项卡中打开同一个文档
- swift - 这个完成处理程序究竟是如何工作的?
- azure-devops - 用于在 Azure Devops 中设置多选字段类型的 REST API
- c# - 更改 Newtonsoft.Json SerializeObject 的顺序
- c# - 根据条件过滤列表 - c#?
- bash - 运行 Shell 脚本以运行 Python 的 Cron 作业不工作
- html - 我想使用 CTRL + P 打印带有分页符的角度组件
- c++ - c++ - for循环中的多个条件得到不正确的结果
- python - 如何在python中将单引号存储到postgres