简体   繁体   English

如何从SQL中的日期参数中减去数字

[英]How to subtract a number from date parameter in Sql

I wana pick Rate from a table for previous day. 我想从表格中选择前一天的费率。 What I am doing is to to subtract 1 form date parameter but after executing this query I am getting an error "ORA-00932: inconsistent datatypes: expected DATE got NUMBER".Kindly guide me how to overcome this error. 我正在做的是减去1个表单日期参数,但是执行此查询后,我得到一个错误“ ORA-00932:不一致的数据类型:预期的日期为NUMBER”。请指导我如何克服此错误。 Thanks in advance. 提前致谢。 My Sample query is: 我的样本查询是:

SELECT   CCY_RATE.MID_REVAL_RATE
  FROM   curr_currency_market_his CCY_RATE
 WHERE       CCY_RATE.CURR_ID = a.CCY_BOUGHT
         AND CCY_RATE.CURRENCY_MARKET = 1
         AND CCY_RATE.LEAD_COMPANY = 1
         AND CCY_RATE.BANKING_DATE  =:Report_date -1

You can try below query to get previous day: 您可以尝试通过以下查询获取前一天的信息:

SELECT   CCY_RATE.MID_REVAL_RATE
  FROM   curr_currency_market_his CCY_RATE
 WHERE       CCY_RATE.CURR_ID = a.CCY_BOUGHT
         AND CCY_RATE.CURRENCY_MARKET = 1
         AND CCY_RATE.LEAD_COMPANY = 1
         AND CCY_RATE.BANKING_DATE  =DATEADD(DD, DATEDIFF(DY, 0, :Report_date), -1);

Use DATE_SUB to remove time 使用DATE_SUB删除时间

SELECT CCY_RATE.MID_REVAL_RATE
FROM   curr_currency_market_his CCY_RATE
WHERE  CCY_RATE.CURR_ID = a.CCY_BOUGHT
     AND CCY_RATE.CURRENCY_MARKET = 1
     AND CCY_RATE.LEAD_COMPANY = 1
     AND CCY_RATE.BANKING_DATE  = DATE_SUB(:Report_date, INTERVAL 1 DAY)

Here you're saying that you want to remove '1 day' from your :Report_date . 在这里,您说的是要从:Report_date删除“ 1天”。

Hope it helps. 希望能帮助到你。

Try this : 尝试这个 :

SELECT CCY_RATE.mid_reval_rate 
FROM   curr_currency_market_his CCY_RATE 
WHERE  CCY_RATE.curr_id = a.ccy_bought 
    AND CCY_RATE.currency_market = 1 
    AND CCY_RATE.lead_company = 1 
    AND Cast(CCY_RATE.banking_date AS DATE) >= Cast(report_date - 1 AS DATE) 

If you want to get this done through mysql, try this, 如果您想通过mysql完成此操作,请尝试此操作,

DATEDIFF(DAY,  DATEADD(day, -1, @CreatedDate), GETDATE())

If not working, then you can calculate the date through php and pass the actual date. 如果不起作用,则可以通过php计算日期并传递实际日期。 To calculate the date through php try this : 要通过php计算日期,请尝试以下操作:

date('Y-m-d', strtotime('-1 day', strtotime(report_date))));

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM