首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我需要将SQL Server中的日期细分为列

我需要将SQL Server中的日期细分为列
EN

Stack Overflow用户
提问于 2017-07-15 06:36:03
回答 1查看 82关注 0票数 0

日期:

代码语言:javascript
复制
3/25/2017
3/12-3/18
3/19-3/25

我使用了下面的SQL语句:

代码语言:javascript
复制
Select  
    SUBSTRING ('3/12-3/18' , 1 , CHARINDEX('-','3/12-3/18') -1) + '/' + Convert(varchar, DATEPART(yyyy,Getdate())) as StartDate,
    SUBSTRING ('3/12-3/18' , CHARINDEX('-','3/12-3/18') + 1 , len('3/12-3/18')) + '/' + Convert(varchar, DATEPART(yyyy,Getdate())) as EndDate

但是我不能转换成第一个

EN

回答 1

Stack Overflow用户

发布于 2017-07-15 07:24:24

您真的应该将日期存储为日期,而不是字符串。

使用isnull()nullif()datename()的组合来生成可以进行convert()编辑的字符串(无论如何都是MDY格式):

代码语言:javascript
复制
create table t ([date] varchar(32));
insert into t values ('3/25/2017'),('3/12-3/18'),('3/19-3/25');

select 
    startdate = convert(date,isnull(
        left(t.date,nullif(charindex('-',t.date)-1,-1))+'/'+datename(year,getdate())
      , t.date))
  , enddate   = convert(date,isnull(
        right(t.date,len(t.date)-nullif(charindex('-',t.date),0))+'/'+datename(year,getdate())
      , t.date))
from t;

rextester演示:http://rextester.com/WFO41395

返回:

代码语言:javascript
复制
+------------+------------+
| startdate  |  enddate   |
+------------+------------+
| 2017-03-25 | 2017-03-25 |
| 2017-03-12 | 2017-03-18 |
| 2017-03-19 | 2017-03-25 |
+------------+------------+
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45112504

复制
相关文章

相似问题

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