首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Oracle中用当前时间设置固定时间分钟和秒

问如何在Oracle中用当前时间设置固定时间分钟和秒
EN

Stack Overflow用户
提问于 2015-02-20 06:01:18
回答 3查看 3K关注 0票数 1

我想在固定时间间隔之间获取数据。

示例:(这是在mysql中工作的,我希望它在oracle中)

Mysql

代码语言:javascript
复制
 $ReportStartDate = "DATE_FORMAT(DATE_SUB(NOW(),INTERVAL 1 HOUR) ,'%Y-%m-%d %H:00:00')"
 $ReportEndDate   = "DATE_FORMAT(DATE_SUB(NOW(),INTERVAL 1 HOUR),'%Y-%m-%d %H:59:59')";

这在mysql.How中很好,在甲骨文中是可能的?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-02-20 07:53:10

无需对DATE和string进行来回转换,您就可以做到这一点。

代码语言:javascript
复制
SELECT 
    TO_CHAR(TRUNC(SYSDATE, 'HH'), 'YYYY-MM-DD HH24:MI:SS'),
    TO_CHAR(TRUNC(SYSDATE, 'HH') + INTERVAL '59:59' MINUTE TO SECOND, 'YYYY-MM-DD HH24:MI:SS')
FROM dual;
票数 1
EN

Stack Overflow用户

发布于 2015-02-20 06:52:19

您似乎想要'YYYY-MM-DD HH24:MI:SS'格式的字符数据类型中的值,并且间隔必须是最后一小时。Oracle中的NOW()由SYSDATE函数表示。DATE_SUB可以用一个小时的直接减法代替。

代码语言:javascript
复制
$ReportStartDate = "to_char(trunc(sysdate - 1/24, 'HH'), 'YYYY-MM-DD HH24:MI:SS')";
$ReportEndDate   = "to_char(trunc(sysdate - 1/24, 'HH') + (3599/3600)/24, 'YYYY-MM-DD HH24:MI:SS')";

更新:您可以用任何想要的日期替换sysdate。

票数 1
EN

Stack Overflow用户

发布于 2015-02-20 06:12:35

$ReportStartDate =“DATE_FORMAT(DATE_SUB(现在),间隔1小时),'%Y-%m-%d %H:00:00‘) $ReportEndDate =“DATE_FORMAT(DATE_SUB(现在),间隔1小时),'%Y-%m-%d %H:59:59‘);

您可以将其转换为:

代码语言:javascript
复制
$ReportStartDate = to_date(to_char(SYSDATE, 'dd-mon-yyyy hh24')||':00:00', 'dd-mon-yyyy hh24:mi:ss')
$ReportEndDate   = to_date(to_char(SYSDATE, 'dd-mon-yyyy hh24')||':59:59', 'dd-mon-yyyy hh24:mi:ss')

您可以使用TO_DATE和适当的格式模型。并在之间使用过滤行。

例如,我希望获取在某个时间段之间雇用的所有员工:

代码语言:javascript
复制
SQL> alter session set nls_date_format='dd-mon-yyyy hh24:mi:ss';

Session altered.

SQL> SELECT empno,
  2    hiredate
  3  FROM EMP
  4  WHERE HIREDATE BETWEEN
  5  TO_DATE('01-apr-1981 00:00:00','dd-mon-yyyy hh24:mi:ss')
  6  AND
  7  TO_DATE('01-dec-1981 23:59:59','dd-mon-yyyy hh24:mi:ss')
  8  /

     EMPNO HIREDATE
---------- --------------------
      7566 02-apr-1981 00:00:00
      7654 28-sep-1981 00:00:00
      7698 01-may-1981 00:00:00
      7782 09-jun-1981 00:00:00
      7839 17-nov-1981 00:00:00
      7844 08-sep-1981 00:00:00

6 rows selected.

SQL>

UPDATE OP希望小时值应该来自sysdate,但是分钟和秒应该是00:00。

您可以提取小时,并将00:00附加为分钟和秒值:

代码语言:javascript
复制
SQL> SELECT to_char(SYSDATE, 'dd-mon-yyyy hh24:mi:ss') currentdate,
  2  to_char(SYSDATE, 'dd-mon-yyyy hh24')||':00:00' dt
  3  FROM dual;

CURRENTDATE          DT
-------------------- --------------------
20-feb-2015 12:19:39 20-feb-2015 12:00:00

SQL>

若要在任何日期时间操作中使用该值,请使用TO_DATE将其转换为日期。

to_date(to_char(SYSDATE, 'dd-mon-yyyy hh24')||':00:00', 'dd-mon-yyyy hh24:mi:ss')

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28622578

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档