日期:
3/25/2017
3/12-3/18
3/19-3/25我使用了下面的SQL语句:
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但是我不能转换成第一个
发布于 2017-07-15 07:24:24
您真的应该将日期存储为日期,而不是字符串。
使用isnull()、nullif()和datename()的组合来生成可以进行convert()编辑的字符串(无论如何都是MDY格式):
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
返回:
+------------+------------+
| startdate | enddate |
+------------+------------+
| 2017-03-25 | 2017-03-25 |
| 2017-03-12 | 2017-03-18 |
| 2017-03-19 | 2017-03-25 |
+------------+------------+https://stackoverflow.com/questions/45112504
复制相似问题