当前位置: 首页 > 面试题库 >

Oracle选择今天之间的日期

谭炎彬
2023-03-14
问题内容

我有一个像这样的Oracle SELECT查询:

Select * From Customer_Rooms CuRo
   Where CuRo.Date_Enter Between 'TODAY 12:00:00 PM' And 'TODAY 11:59:59 PM'

我的意思是,我想选择字段“ date_enter”今天所在的所有位置。我已经尝试过类似Trunc(Sysdate) || ' 12:00:00'的操作,但是没有用。

忠告: 我不能使用TO_CHAR,因为它变得太慢。


问题答案:

假设date_enter是一个DATE字段:

Select * From Customer_Rooms CuRo
   Where CuRo.Date_Enter >= trunc(sysdate)
   And CuRo.Date_Enter < trunc(sysdate) + 1;

trunc()默认情况下,该功能会删除时间部分,因此trunc(sysdate)您可以在今天早晨午夜12点前使用该功能。

如果您特别想坚持使用between,而DATE不是TIMESTAMP,则可以执行以下操作:

Select * From Customer_Rooms CuRo
   Where CuRo.Date_Enter between trunc(sysdate)
      And trunc(sysdate) + interval '1' day - interval '1' second;

between是包容性的,因此,如果您不休息一会儿,那么您有可能会在今晚的午夜准确地获取记录;因此,这会生成您在原始查询中寻找的23:59:59时间。但我认为无论如何,使用>=<会更清晰,更明确。

如果您确定无论如何都不能晚于今天的日期,则上限实际上并没有添加任何内容,您将得到与以下相同的结果:

Select * From Customer_Rooms CuRo
   Where CuRo.Date_Enter >= trunc(sysdate);

但是,您不想使用truncto_char在该date_enter列上;使用任何函数都会阻止使用该列上的索引,这就是为什么查询to_char速度太慢的原因。



 类似资料:
  • 问题内容: 我正在尝试运行一个mysql select语句,该语句会查看今天的日期,并且仅返回在当天注册的结果。我目前已经尝试了以下方法,但是它似乎不起作用。 谢谢大家,我已经修改了此声明。 问题答案:

  • 如果条目的时间戳与今天的日期匹配,我想从SQLite表中选择所有条目。 我查询SQLite数据库如下: 这是我最近的行为,但我不希望在过去24小时内选择所有条目。我只想选择今天的日期是否与时间戳匹配。 如何仅选择表中时间戳与今天日期匹配的行。 数据库中的日期格式为:2014-07-05 12:59:35。

  • 问题内容: 我正在使用PHPMyadmin,并使用PHP将值放入数据库中。我使用时间戳存储产品的到期日期,如下所示,例如: 我要选择所有到期日期等于今天的日期加上8天的日期(例如上面的那一天) 我也想在一个单独的页面中选择所有过期日期等于今天日期+ 2周的内容,如果有人可以帮助我,将不胜感激! 问题答案: 您可以使用以下查询来做到这一点: 您可以使用过去的日期。

  • 问题内容: 我需要找到当天创建的帐户,以及最近7天创建的帐户。 为了找到今天的结果,它可以正常工作,我可以这样做: 但是我不知道如何获得最近的7天帐户。 我尝试了类似的方法,但是没有成功: 你有主意吗? 问题答案: 在mysql中:

  • 问题内容: 希望这是一个简单的解决方案,但我正在尝试过滤以下数据:- 今天 昨天 本星期 这个月 在两个日期之间。 我从数据库获得的日期基本上是一个时间戳。 这是我尝试的: 今天 昨天 … 这不是真的工作。 任何的想法? 问题答案: 如果仅按日期选择,则将计算基于(仅返回日期)而不是(返回日期和时间)。这些示例将捕获日期范围内的所有时间: 今天: 昨天: 这个月: 在2013年6月3日至2013年

  • 我试图通过以下查询获得日期。但没用。 我已经解析了用户输入日期,以'yyyy-mm-dd'格式存储到数据库中。帮我从所有记录中找出今天的生日日期。