2015-08-24 80 views
0

我在SQL中有一個基於日曆的表,如果我的日期爲24-03-2013,我有關於它的所有信息。一週,一週,一個月,四季。等等。在SQL中建立日日曆邏輯

現在我想得到同一日期但前一年的相同信息,即24-03-2012。

種類的日子一天概念。

架構,

DateKey| DayName |DayOfWeek|DayOfMonth|DayOfYear|WeekOfMonth|WeekOfYear|MonthName|MonthofYear|QuarterNum|YearNum|LeapYearFlag 

19000101|01-01-1900| 2 | 1  | 1 |  0  | 1  | January |  1  | 1  | 1900 | 0 

20050101|01-01-2005| 7 | 1  | 1 |  0  | 1  | January |  1  | 1  | 2005 | 0 

20050102|01-02-2005| 1 | 2  | 2 |  0  | 1  | January |  1  | 1  | 2005 | 0 
+3

那麼,什麼是這裏的問題,到底是什麼? – SchmitzIT

+0

你到目前爲止做了什麼? – Sachin

+0

@Sachin其實我是SQL初學者。不知道如何繼續。我可以用Talend做到,但不知道有關查詢。 –

回答

-1

下面的代碼應有助於MSSQL獲得日期時間格式:

create table #temp 
(
name varchar(50) 
) 

insert into #temp values ('19000101|01-01-1900|2|1|1|0|1|January|1|1|1900|0') 
insert into #temp values ('20050101|01-01-2005|7|1|1|0|1|January|1|1|2005|0') 
insert into #temp values ('20050102|01-02-2005|1|2|2|0|1|January|1|1|2005|0') 

select convert(datetime, SUBSTRING(name,0,charindex('|',name,0)), 103) from #temp 

如你願意,你可以更改列和格式的名稱。

1

嘗試:

declare @date datetime 
select @date = '20120304' 
select convert(varchar, @date, 112)as DateKey, 
datename(dw, @date)as DayName, 
datepart(weekday, @date) as DayOfWeek, 
datepart(day, @date)as DayOfMonth , 
datepart(dayofyear, @date) as DayOfYear, 
datepart(week, @date) as WeekOfYear, DATENAME(month, @date) as MonthName, datepart(month, @date)as MonthofYear, datepart(quarter, @date)as QuarterNum, 
datepart(year, @date)as YearNum, CASE WHEN ISDATE(convert(varchar,datepart(year, @date)) + '0229') = 1 THEN 0 ELSE 1 END as LeapYearFlag