首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Server数据计算

Server数据计算
EN

Stack Overflow用户
提问于 2019-08-09 06:02:23
回答 5查看 73关注 0票数 0

我想得到基于当前日期的信息。

如果目前的日期是:

  • 任何月份的第01至14号,都需要返回该月份的第15次。
  • 任何月份的第15至31天,都需要返回该月份的最后一天。

例如:

代码语言:javascript
复制
Current_Date    Exp_date
-------------------------
01-08-2019      15-08-2019
10-08-2019      15-08-2019
14-08-2019      15-08-2019
15-08-2019      31-08-2019
20-08-2019      31-08-2019
25-08-2019      31-08-2019
31-08-2019      31-08-2019

我想要的是简化的表单。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2019-08-09 06:56:36

我们可以通过以下简单的逻辑来实现它。如果您使用的是2012和更高版本,那么我们有EOMONTH()函数来提供EndOfMonth日期。

样本数据:

代码语言:javascript
复制
CREATE TABLE #YourTable (CurrentDate DATETIME)
INSERT INTO #YourTable (CurrentDate)SELECT '08-01-2019'  
INSERT INTO #YourTable (CurrentDate) SELECT '08-10-2019'
INSERT INTO #YourTable (CurrentDate) SELECT '08-14-2019'
INSERT INTO #YourTable (CurrentDate) SELECT '08-15-2019'
INSERT INTO #YourTable (CurrentDate) SELECT '08-20-2019'
INSERT INTO #YourTable (CurrentDate) SELECT '08-25-2019'
INSERT INTO #YourTable (CurrentDate) SELECT '08-31-2019'

查询:

代码语言:javascript
复制
 SELECT DATEPART(DD,CurrentDate),
 case when DATEPART(DD,CurrentDate)<15 THEN  DATEADD(dd,-day(CurrentDate)+15,CurrentDate) 
      when DATEPART(DD,CurrentDate)>14 THEN EOMONTH(CurrentDate) END  AS Exp_Date
 FROM #YourTable
票数 1
EN

Stack Overflow用户

发布于 2019-08-09 06:09:01

你可以试试这个。

代码语言:javascript
复制
 select current_date, 
        case when datepart(day, current_date) > 14 
        then 
            DATEADD(d, -1, DATEADD(m, DATEDIFF(m, 0, current_date) + 1, 0))
        else  
           DATEADD(D, 15,   DATEADD(d, -1, DATEADD(m, DATEDIFF(m, 0, current_date) , 0)))
         end as Exp_date
 from yourtable
票数 1
EN

Stack Overflow用户

发布于 2019-08-09 06:24:07

尝试如下:用您的日期替换hardCode日期

代码语言:javascript
复制
SELECT CONCAT(CONCAT(CONCAT (CONCAT(CASE  WHEN  DAY('2017/08/25') < 14 THEN 15 else 31 end , '-'),

 CASE  WHEN  DATEPART(month, '2017/08/25') < 10  THEN Concat('0',DATEPART(month, '2017/08/25')) else DATEPART(month, '2017/08/25') end),'-'),   cast(DATEPART(year, '2017/08/25') as nvarchar(4)))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57424222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档