bib*_*hew 5 sql sql-server sql-server-2008
我在不同的列中有月份和年份,我想在两点(即开始日期和结束日期)之间记录。我只有月和年。我发现的一个解决方案是将日期、月份组合转换为日期。假设我有
Start month : 3 Start year : 2010
End month : 6 End year : 2013
Run Code Online (Sandbox Code Playgroud)
我想将它们转换为
start date = 01-03-2010
End date = 31-06-2013
Run Code Online (Sandbox Code Playgroud)
有什么解决办法吗?
小智 7
SqlServer 2012 开始支持DATEFROMPARTS ()。可以这样做:
DECLARE @Month as int, @Year as int
SET @Month = 8
SET @Year = 2018
SELECT DATEFROMPARTS(@Year,@Month,'01')
Run Code Online (Sandbox Code Playgroud)
要获取该月的最后日期,您可以使用EOMONTH () ,如下所示:
SELECT EOMONTH(DATEFROMPARTS(@Year,@Month,'01'))
Run Code Online (Sandbox Code Playgroud)
正如Marc B所说,结束月会很困难,因为你需要弄清楚指定年/月的最后一天是哪一天。
尝试这个
DECLARE @StartMonth INT = 3
DECLARE @StartYear INT = 2010
DECLARE @EndYear INT = 2013
DECLARE @EndMonth INT = 6
SELECT Dateadd(year, @StartYear - 2000,Dateadd(month, @StartMonth - 1, '20000101')) AS StartDate,
Dateadd(year, @EndYear - 2000, Dateadd(month, @EndMonth - 1, '20000101')) AS EndDate
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
50759 次 |
| 最近记录: |