oracle - oracle sql如何获取星期几
问题描述
我有以下查询获取日期的星期几:
SELECT pdm.serie, rta.matricula_ant, TO_CHAR (fecha, 'ww') semana,
SUM (rta.kms_acumulados) kms,
COUNT
(DISTINCT (CASE
WHEN v.secuencia BETWEEN rta.sec_origen AND rta.sec_destino
THEN v.cod_inc
ELSE '0'
END
)
)
- 1 numincidencias
FROM (SELECT ms.tren, ms.fecha_origen_tren, ms.secuencia, ri.cod_inc
FROM r_incidencias ri, mer_sitra ms
WHERE ri.cod_serv = ms.tren
AND ri.fecha_origen_tren = ms.fecha_origen_tren
AND ri.cod_tipoin IN (SELECT cod_tipo_iincidencia
FROM v_tipos_incidencias
WHERE grupo = '45')
AND ri.punto_desde = ms.cod_estacion) v,
r_trenes_asignar rta,
r_maquinas rm,
planificador.pl_dh_material pdm
WHERE rta.fecha BETWEEN TO_DATE ('21/09/2018', 'dd/mm/yyyy') AND TO_DATE ('21/09/2018',
'dd/mm/yyyy'
)
AND rta.serie >= 4000
AND rta.matricula_ant IS NOT NULL
AND rm.matricula_maq = rta.matricula_ant
AND rm.cod_serie = pdm.id_material
AND rta.grafico BETWEEN pdm.desde AND pdm.hasta
AND v.tren(+) = rta.tren
AND v.fecha_origen_tren(+) = rta.fecha
GROUP BY pdm.serie, rta.matricula_ant, TO_CHAR (fecha, 'ww')
ORDER BY pdm.serie, rta.matricula_ant, TO_CHAR (fecha, 'ww')
例如第 1 周
我要显示
第 1 周:1 月 1 日 - 1 月 7 日
我怎样才能得到这个?
解决方案
Oracle 提供了TRUNC(datestamp, format)
以这种方式操作日期的功能。您可以使用各种格式字符串来获取季度、年份甚至小时的第一天。
给定一个特定的日期戳值,Oracle 将返回当前一周第一天的午夜,并使用以下表达式:
TRUNC(datestamp,'DY')
您可以在日期戳中添加天数。因此,这个表达式在一周的最后一天给你午夜
TRUNC(datestamp,'DY') + 6
本周所有行的 WHERE 子句选择器可能是这个。
WHERE datestamp >= TRUNC(SYSDATE,'DY')
AND datestamp < TRUNC(SYSDATE,'DY') + 7
请注意,该范围的结束点恰好在<
下周第一天的 ( ) 午夜之前。您需要它,因为您可能在一周的最后一天午夜之后有日期戳。(注意使用BETWEEN
日期戳范围。)
和,
SELECT TO_CHAR(TRUNC(SYSDATE,'DY'),'YYYY-MM-DD'),
TO_CHAR(TRUNC(SYSDATE,'DY')+6,'YYYY-MM-DD')
FROM DUAL;
以类似 ISO 的格式显示本周的第一个和最后一个日期。
日期算术很酷。每年至少研究一次 DBMS 中的日期算术函数是值得的。
推荐阅读
- javafx - 无法拖放 JFXTimePicker 控件
- python - 如何在 Python 中使用 selenium 登录网站?
- c++ - vscode中的g ++错误:没有这样的文件或目录
- python - 如何运行 stop logcat 一段时间或检测某些关键字
- reactjs - KeyboardDatePicker MaterialUI - 自定义遮罩格式
- linphone - Flexisip 到 PBX 重新注册
- sql - string_split 的另一种方法
- c# - 特定项目的 Mapster.Tool 代码生成
- php - PHP PDO查询试图从值创建子数组
- c# - Task 尚未开始执行时没有创建工作线程?