我在單獨的列中有月份和年份,我想要在兩個點(即開始日期和結束日期)之間進行記錄。我只有月和年。一個解決辦法我發現是轉換日期,月份合併爲日期.Say我有在SQL中轉換月份和年份組合
Start month : 3 Start year : 2010
End month : 6 End year : 2013
我想將它們轉換爲
start date = 01-03-2010
End date = 31-06-2013
任何解決方案?
我在單獨的列中有月份和年份,我想要在兩個點(即開始日期和結束日期)之間進行記錄。我只有月和年。一個解決辦法我發現是轉換日期,月份合併爲日期.Say我有在SQL中轉換月份和年份組合
Start month : 3 Start year : 2010
End month : 6 End year : 2013
我想將它們轉換爲
start date = 01-03-2010
End date = 31-06-2013
任何解決方案?
由於馬克乙說,結束月將是困難的,因爲你需要弄清楚指定年份的最後一天/月是什麼。
試試這個
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
這裏有一個方法:
select convert(date, cast(startyear*10000 + startmon*100 + 1 as varchar(8)), 112)
. . .
如果日期部分存儲爲整數,你可以這樣做只是想將它們轉換爲varchar,串聯,再投。例如:
DECLARE @StartYear INT = 2012
DECLARE @StartMOnth INT = 6
SELECT CAST(CAST(@StartYear AS CHAR(4)) + '-' + CAST(@StartMonth AS VARCHAR(2)) + '-01' AS DATE)
在結束日期,您可以使用一個CASE語句來確定該月的最後一天。不要忘了閏年。
以下是經過年月
DECLARE @month varchar(2)
DECLARE @year varchar(4)
月的第一次約會
set @month='03'
set @year='2010'
select cast(@year + '-' + @month + '-01' as date)
輸出找到每月最後一個和第一次約會的方式
2010-03-01
上個月的日期(增加你的月1然後減去1天)
set @month='06'
set @year='2013'
select CAST(cast(@year + '-' + Cast(cast(@month as int)+1 as varchar(20)) + '-01' as datetime)-1 as DATE)
輸出
2013-06-30
開始一個月是很容易的。因爲您需要確定指定年份/月份的最後一天是什麼,因此最後一個月將很難。 –
http://stackoverflow.com/questions/266924/create-a-date-with-t-sql –
無論誰設計這個表應該被解僱。 – Kermit