sql - oracle中的日期元素
问题描述
我想在我的 Sql 中添加日期条件,但不知道怎么做。下面的SQL...
select
dsp_sku, sum(INVN_ADJMT_QTY) qty,
decode(pt.tran_type||pt.tran_code||pt.actn_code, '60500','Total SKU inventory','60501','Total case inventory (allocatable)','60502','Total carton inventory','60503','Total active inventory', '60504','Total transitional inventory (allocatable)','60506','Total case-pick inventory','60511','Unallocatable case inventory','60514','Unallocatable transitional inventory', '60597','Total SKU inventory - Allocatable','60598','Total SKU inventory - UnAllocatable','605TXX','Transitional inventory by type (XX=trans. type)', '605T10','Transitional inventory by type (10)','605T20','Transitional inventory by type (20)','605T30','Transitional inventory by type (30)', '605T40','Transitional inventory by type (40)','605T0','Transitional inventory by type (0)','605T99','Transitional inventory by type (99)', '605LPN','Case Inventory by lock code (PN)','605LRC','Case Inventory by lock code (RC)','605LQA','Case Inventory by lock code (QA)','605LQH','Case Inventory by lock code (QH)', '605LEX','Case Inventory by lock code (EX)','605LRW','Case Inventory by lock code (RW)','605LDM','Case Inventory by lock code (DM)','605LWD','Case Inventory by lock code (WD)', '605LQU','Case Inventory by lock code (QU)','605LCH','Case Inventory by lock code (CH)','605LSD','Case Inventory by lock code (SD)','605LBL','Case Inventory by lock code (BL)', '605LCC','Case Inventory by lock code (CC)','605LML','Case Inventory by lock code (ML)','605LXX','Case Inventory by lock code (XX=lock code)' ) STATUS,
pt.tran_type||pt.tran_code||pt.actn_code code_blend
from PIX_TRAN pt
inner join item_master im on
im.sku_id = pt.sku_id
where
tran_type = '605'
--and tran_code = '01'
--and actn_code
and whse = 'PH3'
--and trunc(pt.create_date_time) like trunc(sysdate) - 1
and (
(im.dsp_sku ='85865') or
(im.dsp_sku ='86111') or
(im.dsp_sku ='173016') or
(im.dsp_sku ='176630') or
(im.dsp_sku ='72204064')
)
group by
dsp_sku, tran_type||tran_code||actn_code
order by
code_blend, dsp_sku
在查看 SKU 的部分中,
and (
(im.dsp_sku ='85865') or
(im.dsp_sku ='86111') or
(im.dsp_sku ='173016') or
(im.dsp_sku ='176630') or
(im.dsp_sku ='72204064')
)
我想给它添加一个日期元素。查询的目的是查看某天建筑物中是否有库存,所以我想说(im.dsp_sku = '85864' (then how ever you would have it check for the specific day)
的是我需要在某个日期检查每个 SKU,所以我不能每个都进行一次大规模搜索SKU 有自己的日期需要检查,我有大约 11k SKU 需要检查。感谢您的任何见解。
解决方案
我建议您不要TRUNC
在日期列上应用,因为它会导致日期列上的现有索引(如果有)未被使用,从而降低其性能。
TRUNC
将您的陈述重写为
pt.create_date_time >= DATE '2019-05-05' AND
pt.create_date_time < DATE '2019-05-05' + 1
如果您想以所需格式传递日期值,请使用TO_DATE
,但仅在右侧。
pt.create_date_time >= TO_DATE( '05/05/2019','dd/mm/yyyy') AND
pt.create_date_time < TO_DATE( '05/05/2019','dd/mm/yyyy') + 1
--or mm/dd/yyyy
推荐阅读
- python - 重定向快捷方式不起作用,不在浏览器上重定向我
- java - 后端从数据库中获取所有数据但返回一个结果
- numpy - “建立强混合整数规划公式的几何方法”中的定理 1
- python - flask-admin 自定义表单操作并启动后台进程
- c - 将可变数量的参数传递给 C 中的函数
- javascript - 如何在使用位置时将表列 A 中的 div 放在其余列的顶部:React 应用程序中的粘性
- algorithm - 将 N 个矩形打包成一个更大的矩形的算法
- python - Graphistry 图表并不总是正确显示
- java - 运行 maven clean install 时未解决的 java.net.http 类
- sql - 将登录名迁移到 azure 中的另一个订阅