【问题标题】:How can I get date like this in SQL Server?如何在 SQL Server 中获取这样的日期?
【发布时间】:2014-06-07 16:40:46
【问题描述】:

我在 SQL Server 2012 中有一个包含此数据的表。

tbl_contract:

ContractId         RenueDate          BillDay          BillMonth
------------------------------------------------------------------
     1             2014-06-15            10               -1
     2             2014-08-04             1               -2

现在我需要格式化一个计费日期,计费日期应该根据 billmonth 和 billday from renuedate,比如,

 ContractId         RenueDate          BillingDate
---------------------------------------------------
     1             2014-06-15            2014-05-10        
     2             2014-08-04            2014-06-01    

我只需要使用 SQL 查询即可。意味着我需要获得那些账单日期小于或等于今天日期的合同。我需要根据 renue date、billday 和 billmonth 创建计费日期。

谁能帮我做这件事?我应该在查询中做什么来格式化帐单日期并将其与今天的日期进行比较?

请有人帮助我。

提前致谢。

【问题讨论】:

  • 搜索 dateAdd() ....

标签: sql sql-server date select


【解决方案1】:
Select CONTRACTID, RENUEDATE, REPLACE(CONVERT(VARCHAR,DATEADD(D,-(DAY(NEWDATE)) + BillDay,NEWDATE),111),'/','-')
From (
Select CONTRACTID, 
  REPLACE(CONVERT(VARCHAR,RENUEDATE,111),'/','-') RENUEDATE, DATEADD(M, BILLMONTH, RENUEDATE) NEWDATE, BillDay
From TBL_CONTRACT
) AS Tbl

试试这个。它给你的输出和你给的一样。 如下。

CONTRACTID     RENUEDATE    BILLINGDATE
1              2014-06-15      2014-05-10
2              2014-08-04       2014-06-01

【讨论】:

  • @VigneshKumar,我现在更新查询签入。如果有任何问题,请告诉我。
  • @RiteshKhatri 是的,很好...+1
【解决方案2】:

类似这样的:

select
    ContractId, 
    RenueDate,
    BillingDate = Cast(DateAdd(month, BillMonth, DateAdd(day,BillDay-1,DateAdd(month, DateDiff(month, 0, RenueDate), 0))) as date)
from tbl_contract

测试:

select
    ContractId, 
    RenueDate,
    BillingDate = Cast(DateAdd(month, BillMonth, DateAdd(day,BillDay-1,DateAdd(month, DateDiff(month, 0, RenueDate), 0))) as date)
from
(
    values 
    (1, cast('2014-06-15' as date), 10, -1),
    (2, cast('2014-08-04' as date), 1, -2)
) as tbl_contract(ContractId, RenueDate, BillDay, BillMonth)

【讨论】:

  • @runfanov :谢谢,但我得到的是 NULL billingdate。
  • 嘿实际上我不需要添加账单日,但我需要账单日作为日期。就像 billday 是 10 比我需要第 10 天一样。
猜你喜欢
  • 2017-05-08
  • 2019-05-22
  • 2011-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-16
  • 1970-01-01
相关资源
最近更新 更多