首页 > 解决方案 > 如何从 sysdate 中减去 30 天并排除小时数

问题描述

我正在尝试从 sysdate 中减去 30 天

我正在使用的查询是(sysdate - 30)。但是,这包括当前的 sysdate 小时和分钟。

我希望它包含 sysdate 为 -30 的所有数据,而不指定小时和分钟。

标签: sqloracle

解决方案


例如:

SQL> alter session set nls_Date_format = 'dd.mm.yyyy hh24:Mi:ss';

Session altered.

SQL> select sysdate,
  2         sysdate - 30 thirty_days_ago,
  3         trunc(sysdate - 30) truncated
  4  from dual;

SYSDATE             THIRTY_DAYS_AGO     TRUNCATED
------------------- ------------------- -------------------
26.09.2019 11:10:18 27.08.2019 11:10:18 27.08.2019 00:00:00

SQL>

如果你想在没有时间分量的情况下显示alter session它,或者再次(但使用不同的数据格式,例如dd.mm.yyyy),或者应用TO_CHAR函数:

SQL> select to_char(trunc(sysdate - 30), 'dd.mm.yyyy') without_time
  2  from dual;

WITHOUT_TI
----------
27.08.2019

SQL>

推荐阅读