【问题标题】:Creating a date range using today's date使用今天的日期创建日期范围
【发布时间】:2012-12-06 01:41:27
【问题描述】:

我正在尝试创建一个用户将来可以运行的报告。我需要指定一个日期范围,在这种情况下是最后 6 周的数据。我在此报告中使用的日期字段是 app_receipt_date。我只是想学习如何使用类似于 excels today() 函数的函数。

这里是sql语句。忽略我运行它的最后一个实例的日期。同样,我正在尝试“自动化”这一切。

  select a.underwriting_app_id,
   q.underwriting_quote_id,
   a.application_source,
   q.insured_id,
   q.policy_year,
   a.underwriting_rep,
   --b.marketing_rep,
   a.mail_name,
   a.app_receipt_date,
   a.effective_date,
   a.expiration_date,
   SUBSTR(TO_CHAR(a.effective_date, 'MM/DD/YYYY'), 1,2) as Month,
   a.underwriting_app_status,
   s.description,
   a.last_status_date,
   a.governing_class_code_id,
   q.annual_premium,
   q.create_date,
   q.create_user

 from underwriting_app a,
 app_quote q,
 underwriting_app_status s


where a.underwriting_app_id = q.underwriting_app_id and
  a.underwriting_app_status = s.underwriting_app_status and
  --a.agency_no = b.agency_no (+) and
  q.active_quote_flag = 'Y' and
  a.app_receipt_date > to_date('04-Nov-2012','dd-mm-yyyy') and
  a.app_receipt_date < to_date('17-Dec-2012','dd-mm-yyyy')

提前感谢您的帮助。

布拉德

【问题讨论】:

  • 您使用的是哪个数据库?添加一些实际的 SQL 代码可以澄清问题。
  • 我不知道这是否回答了你的问题。我是 PL/SQL 开发人员。 9.0?那正确吗?抱歉,再次感谢

标签: sql oracle date range


【解决方案1】:

如果您在 Oracle 中,请使用“SYSDATE”作为当前日期,您可以通过直接加减法来添加天数。如果假设一周是 7 天,您可以这样做:

SELECT * FROM Your_Table
WHERE app_receipt_date > SYSDATE - (6 * 7);

“* 7”只是表示您将六周乘以七天。

【讨论】:

  • +1 "假设一周是 7 天" - 我很佩服这一点!我希望更多的开发人员能够停下来思考他们在应用程序中构建的假设:)
【解决方案2】:

如果您使用的是 T-SQL,您可以使用 GETDATE() 函数来获取今天的日期,然后您可以使用 DATEADD() 函数来调整值以获取您的范围,因此您可以使用与此类似的东西:

SELECT * FROM Your_Table
WHERE app_receipt_date > DATEADD(week,-6,GETDATE());

希望这会有所帮助。

【讨论】:

  • 我收到一条错误消息,显示 ORA-00904: "DATEADD":invalid identifier
  • 啊,您使用的是 Oracle。要在 Oracle 中获取今天的日期,您可以使用 select sysdate from dual。然后,您可以通过添加或减去该日期来添加/减去该日期,例如昨天的日期将是 select sysdate-1 from dual 等等。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多