【问题标题】:How to get table data between two time using sql query如何使用sql查询在两次之间获取表数据
【发布时间】:2017-05-19 09:54:30
【问题描述】:

我正在使用下面的 sql 查询来获取昨天在上午 12:00 到上午 11:59 之间更新的表数据。在这个查询中,我需要每天输入日期,但我不想一次又一次地输入日期,所以我想要另一个查询来获取表数据而不更新日期。

select * 
from transaction_persistence
where currentdatetimestamp between '18-MAY-2017 12.00.00 AM' and '18-MAY-2017 11.59.59 AM'; 

【问题讨论】:

  • 根据对我的回答的评论,OP 使用的是 Oracle 而不是 MySQL。
  • @GordonLinoff 是的,我正在使用 sql developer 进行上述查询

标签: sql oracle qsqlquery


【解决方案1】:

使用now()curdate()

select * 
from transaction_persistence
where currentdatetimestamp >= CURDATE() and
      currentdatetimestamp < CURDATE() + interval 12 hour;

注意:使用日期或日期/时间值时,BETWEEN 很危险。在你的情况下,你每半天错过一秒钟。

编辑:

您在使用 Oracle 而不是 MySQL 时遇到 Oracle 错误:

select * 
from transaction_persistence
where currentdatetimestamp >= trunc(sysdate) and
      currentdatetimestamp < trunc(sysdate) + 0.5

【讨论】:

  • 在您的情况下,它显示错误 ORA-00933:SQL 命令未正确结束 00933。00000 -“SQL 命令未正确结束” *原因:*操作:行错误:4 列:51
  • 我 currentdatetimestamp 的数据格式为 '10-APR-2016 10:40:20 AM'
【解决方案2】:

使用DATE_SUB()CURDATE()

 SELECT * 
FROM transaction_persistence
WHERE currentdatetimestamp<CURDATE() AND currentdatetimestamp>=DATE_SUB(CURDATE(),INTERVAL 1 DAY) 

【讨论】:

  • 第三行显示“缺少右括号”错误
  • @amanshivhare 你能告诉我你使用的是哪个服务器吗?并提到mysql客户端。
  • 我 currentdatetimestamp 的数据格式为 '10-APR-2016 10:40:20 AM'
猜你喜欢
  • 1970-01-01
  • 2017-01-30
  • 1970-01-01
  • 2017-10-03
  • 2016-05-13
  • 1970-01-01
  • 1970-01-01
  • 2013-07-15
  • 1970-01-01
相关资源
最近更新 更多