带有月份时间的最后日期
Last date with time of the month
需要您的帮助来完成查询以获取 sysdate 月份的最后一个日期时间。
select to_char(last_day(sysdate),'DD-Mon-YYYY HH24:MI:SS') from dual
它给出了预期的最后日期,但我需要时间作为 23:59:00
,这是不可能通过上述查询实现的。
您可以在第二天使用 TRUNC 即 SYSDATE + 1
,然后减去 60
秒即 60/86400
以获得所需的输出。
SQL> SELECT to_char((trunc(last_day(sysdate)) +1) - 60/86400,'DD-Mon-YYYY HH24:MI:SS') dt
2 FROM dual;
DT
--------------------
29-Feb-2016 23:59:00
SQL>
您也可以使用 interval '1' minute
或 interval '60' second
代替 60/86400
。
如果您出于某种原因只想 显示 ,您可以将时间硬编码到格式掩码中:
select to_char(last_day(sysdate), 'DD-Mon-YYYY "23:59:00"') from dual;
但您可能真的希望它作为日期对象,在这种情况下,您可以在截断的(午夜)日期上加上 23 小时 59 分钟,wchi 是一天 1440 分钟中的 1439 分钟:
select to_char(trunc(last_day(sysdate)) + 1439/1440, 'DD-Mon-YYYY HH24:MI:SS')
from dual;
或者您可以转到第二天并删除一分钟,可以是小数天数,也可以是间隔:
select to_char(trunc(last_day(sysdate)) + interval '1' day - interval '1' minute,
'DD-Mon-YYYY HH24:MI:SS') from dual;
通常,如果您要处理的时间段最多要包括 23:59:59,您也可以使用这些方法中的任何一种,但正如 Damien_The_Unbeliever 在评论中所说,它是更容易与下一个时期的开始进行比较(例如 < add_months(trunc(sysdate, 'MM'), 1)
。如果没有正确考虑时间,很容易意外错过一天的一部分,特别是如果您实际上有时间戳而不是日期。
需要您的帮助来完成查询以获取 sysdate 月份的最后一个日期时间。
select to_char(last_day(sysdate),'DD-Mon-YYYY HH24:MI:SS') from dual
它给出了预期的最后日期,但我需要时间作为 23:59:00
,这是不可能通过上述查询实现的。
您可以在第二天使用 TRUNC 即 SYSDATE + 1
,然后减去 60
秒即 60/86400
以获得所需的输出。
SQL> SELECT to_char((trunc(last_day(sysdate)) +1) - 60/86400,'DD-Mon-YYYY HH24:MI:SS') dt
2 FROM dual;
DT
--------------------
29-Feb-2016 23:59:00
SQL>
您也可以使用 interval '1' minute
或 interval '60' second
代替 60/86400
。
如果您出于某种原因只想 显示 ,您可以将时间硬编码到格式掩码中:
select to_char(last_day(sysdate), 'DD-Mon-YYYY "23:59:00"') from dual;
但您可能真的希望它作为日期对象,在这种情况下,您可以在截断的(午夜)日期上加上 23 小时 59 分钟,wchi 是一天 1440 分钟中的 1439 分钟:
select to_char(trunc(last_day(sysdate)) + 1439/1440, 'DD-Mon-YYYY HH24:MI:SS')
from dual;
或者您可以转到第二天并删除一分钟,可以是小数天数,也可以是间隔:
select to_char(trunc(last_day(sysdate)) + interval '1' day - interval '1' minute,
'DD-Mon-YYYY HH24:MI:SS') from dual;
通常,如果您要处理的时间段最多要包括 23:59:59,您也可以使用这些方法中的任何一种,但正如 Damien_The_Unbeliever 在评论中所说,它是更容易与下一个时期的开始进行比较(例如 < add_months(trunc(sysdate, 'MM'), 1)
。如果没有正确考虑时间,很容易意外错过一天的一部分,特别是如果您实际上有时间戳而不是日期。