- SQL Server
- Oracle (provider)
- SQLite (provider)
- MySQL (provider)
- Postgresql (provider)
- DB2 (provider)
Here is the code on GitHub.
Date
|
Oracle
|
|
Week
|
First day (Sunday)
|
trunc(sysdate, 'd')
|
First workkday (Monday)
|
trunc(sysdate, 'd') + 1
|
|
Last workday (Friday)
|
trunc(sysdate, 'd') + 5
|
|
Last day (Saturday)
|
trunc(sysdate, 'd') + 6
|
|
Previous Sunday
|
trunc(sysdate, 'd') - 7
|
|
Previous Monday
|
trunc(sysdate, 'd') - 6
|
|
Previous Friday
|
trunc(sysdate, 'd') - 2
|
|
Previous Saturday
|
trunc(sysdate, 'd') - 1
|
|
Month
|
First day
|
trunc(sysdate, 'mm')
|
Last day
|
add_months(trunc(sysdate, 'mm'), 1) - 1
|
|
Previous 1st
|
add_months(trunc(sysdate, 'mm'), -1)
|
|
Previous last
|
trunc(sysdate, 'mm') - 1
|
|
Quarter
|
First day
|
trunc(sysdate, 'q')
|
Last day
|
add_months(trunc(sysdate, 'q'), 3) - 1
|
|
Previous 1st
|
add_months(trunc(sysdate, 'q'), -3)
|
|
Previous last
|
trunc(sysdate, 'q') - 1
|
|
Year
|
First day
|
trunc(sysdate, 'y')
|
Last day
|
add_months(trunc(sysdate, 'y'), 12) - 1
|
|
Previous 1st
|
add_months(trunc(sysdate, 'y'), -12)
|
|
Previous last
|
trunc(sysdate, 'y') - 1
|
|
Fiscal Year
7/1-6/30 |
First day
|
add_months(trunc(add_months(sysdate, -6), 'y'), 6)
|
Last day
|
add_months(trunc(add_months(sysdate, 6), 'y'), 6) - 1
|
|
Previous 1st
|
add_months(trunc(add_months(sysdate, -18), 'y'), 6)
|
|
Previous last
|
add_months(trunc(add_months(sysdate, -6), 'y'), 6) - 1
|
Date
|
T-SQL
|
|
Week
|
First day (Sunday)
|
DATEADD(wk, DATEDIFF(wk, 0, getdate()), -1)
|
First workkday (Monday)
|
DATEADD(wk, DATEDIFF(wk, 0, getdate()), 0)
|
|
Last workday (Friday)
|
DATEADD(wk, DATEDIFF(wk, 0, getdate()), 4)
|
|
Last day (Saturday)
|
DATEADD(wk, DATEDIFF(wk, 0, getdate()), 5)
|
|
Previous Sunday
|
DATEADD(wk, DATEDIFF(wk, 0, getdate()), -8)
|
|
Previous Monday
|
DATEADD(wk, DATEDIFF(wk, 0, getdate()), -7)
|
|
Previous Friday
|
DATEADD(wk, DATEDIFF(wk, 0, getdate()), -3)
|
|
Previous Saturday
|
DATEADD(wk, DATEDIFF(wk, 0, getdate()), -2)
|
|
Month
|
First day
|
DATEADD(mm, DATEDIFF(mm, 0, getdate()), 0)
|
Last day
|
DATEADD(mm, DATEDIFF(mm, 0, getdate()) + 1, -1)
|
|
Previous 1st
|
DATEADD(mm, DATEDIFF(mm, 0, getdate()) - 1, 0)
|
|
Previous last
|
DATEADD(mm, DATEDIFF(mm, 0, getdate()), -1)
|
|
Quarter
|
First day
|
DATEADD(qq, DATEDIFF(qq, 0, getdate()), 0)
|
Last day
|
DATEADD(qq, DATEDIFF(qq, 0, getdate()) + 1, -1)
|
|
Previous 1st
|
DATEADD(qq, DATEDIFF(qq, 0, getdate()) - 1, 0)
|
|
Previous last
|
DATEADD(qq, DATEDIFF(qq, 0, getdate()), -1)
|
|
Year
|
First day
|
DATEADD(yy, DATEDIFF(yy, 0, getdate()), 0)
|
Last day
|
DATEADD(yy, DATEDIFF(yy, 0, getdate()), 364)
|
|
Previous 1st
|
DATEADD(yy, DATEDIFF(yy, 0, getdate()) - 1, 0)
|
|
Previous last
|
DATEADD(yy, DATEDIFF(yy, 0, getdate()), -1)
|
|
Fiscal Year
7/1-6/30 |
First day
|
cast(datename(year, dateadd(month, -6, getdate())) + '0701' as
datetime)
|
Last day
|
cast(datename(year, dateadd(month, 6, getdate())) + '0630' as
datetime)
|
|
Previous 1st
|
cast(datename(year, dateadd(month, -18, getdate())) + '0701' as
datetime)
|
|
Previous last
|
cast(datename(year, dateadd(month, -6, getdate())) + '0630' as
datetime)
|
Date
|
OBIEE
|
|
Day
|
Today
|
CURRENT_DATE
|
Yesterday
|
TIMESTAMPADD(SQL_TSI_DAY, -1, CURRENT_DATE)
|
|
Week
|
First day (Sunday)
|
TimestampAdd(SQL_TSI_WEEK, TimestampDiff(SQL_TSI_WEEK,
DATE'1900-01-01', CURRENT_DATE), DATE'1899-12-31')
|
First workkday (Monday)
|
TimestampAdd(SQL_TSI_WEEK,
TimestampDiff(SQL_TSI_WEEK, DATE'1900-01-01', CURRENT_DATE),
DATE'1900-01-01')
|
|
Last workday (Friday)
|
TimestampAdd(SQL_TSI_WEEK, TimestampDiff(SQL_TSI_WEEK,
DATE'1900-01-01', CURRENT_DATE), DATE'1900-01-05')
|
|
Last day (Saturday)
|
TimestampAdd(SQL_TSI_WEEK, TimestampDiff(SQL_TSI_WEEK,
DATE'1900-01-01', CURRENT_DATE), DATE'1900-01-06')
|
|
Previous Sunday
|
TimestampAdd(SQL_TSI_WEEK, TimestampDiff(SQL_TSI_WEEK,
DATE'1900-01-01', CURRENT_DATE), DATE'1899-12-24')
|
|
Previous Monday
|
TimestampAdd(SQL_TSI_WEEK, TimestampDiff(SQL_TSI_WEEK,
DATE'1900-01-01', CURRENT_DATE), DATE'1899-12-25')
|
|
Previous Friday
|
TimestampAdd(SQL_TSI_WEEK, TimestampDiff(SQL_TSI_WEEK,
DATE'1900-01-01', CURRENT_DATE), DATE'1899-12-29')
|
|
Previous Saturday
|
TimestampAdd(SQL_TSI_WEEK, TimestampDiff(SQL_TSI_WEEK,
DATE'1900-01-01', CURRENT_DATE), DATE'1899-12-30')
|
|
Month
|
First day
|
TimestampAdd(SQL_TSI_MONTH, TimestampDiff(SQL_TSI_MONTH,
DATE'1900-01-01', CURRENT_DATE), DATE'1900-01-01')
|
Last day
|
TimestampAdd(SQL_TSI_MONTH, TimestampDiff(SQL_TSI_MONTH,
DATE'1900-01-01', CURRENT_DATE), DATE'1900-01-31')
|
|
Previous 1st
|
TimestampAdd(SQL_TSI_MONTH, TimestampDiff(SQL_TSI_MONTH,
DATE'1900-01-01', CURRENT_DATE), DATE'1899-12-01')
|
|
Previous last
|
TimestampAdd(SQL_TSI_MONTH, TimestampDiff(SQL_TSI_MONTH,
DATE'1900-01-01', CURRENT_DATE), DATE'1899-12-31')
|
|
Quarter
|
First day
|
TimestampAdd(SQL_TSI_QUARTER,
TimestampDiff(SQL_TSI_QUARTER, DATE'1900-01-01', CURRENT_DATE),
DATE'1900-01-01')
|
Last day
|
TimestampAdd(SQL_TSI_QUARTER, TimestampDiff(SQL_TSI_QUARTER,
DATE'1900-01-01', CURRENT_DATE), DATE'1900-03-31')
|
|
Previous 1st
|
TimestampAdd(SQL_TSI_QUARTER, TimestampDiff(SQL_TSI_QUARTER,
DATE'1900-01-01', CURRENT_DATE), DATE'1899-10-01')
|
|
Previous last
|
TimestampAdd(SQL_TSI_QUARTER, TimestampDiff(SQL_TSI_QUARTER,
DATE'1900-01-01', CURRENT_DATE), DATE'1899-12-31')
|
|
Year
|
First day
|
TimestampAdd(SQL_TSI_YEAR,
TimestampDiff(SQL_TSI_YEAR, DATE'1900-01-01', CURRENT_DATE),
DATE'1900-01-01')
|
Last day
|
TimestampAdd(SQL_TSI_YEAR, TimestampDiff(SQL_TSI_YEAR,
DATE'1900-01-01', CURRENT_DATE), DATE'1900-12-31')
|
|
Previous 1st
|
TimestampAdd(SQL_TSI_YEAR, TimestampDiff(SQL_TSI_YEAR,
DATE'1900-01-01', CURRENT_DATE), DATE'1899-01-01')
|
|
Previous last
|
TimestampAdd(SQL_TSI_YEAR, TimestampDiff(SQL_TSI_YEAR,
DATE'1900-01-01', CURRENT_DATE), DATE'1899-12-31')
|
|
Fiscal Year
7/1-6/30 |
First day
|
CAST(CONCAT(CAST(YEAR(TimestampAdd(SQL_TSI_MONTH, -6,
CURRENT_DATE)) as VARCHAR(4)), '/07/01') as DATE)
|
Last day
|
CAST(CONCAT(CAST(YEAR(TimestampAdd(SQL_TSI_MONTH, 6,
CURRENT_DATE)) as VARCHAR(4)), '/06/30') as DATE)
|
|
Previous 1st
|
CAST(CONCAT(CAST(YEAR(TimestampAdd(SQL_TSI_MONTH, -18,
CURRENT_DATE)) as VARCHAR(4)), '/07/01') as DATE)
|
|
Previous last
|
CAST(CONCAT(CAST(YEAR(TimestampAdd(SQL_TSI_MONTH, -6,
CURRENT_DATE)) as VARCHAR(4)), '/06/30') as DATE)
|
define row_count = "100" | |
select | |
level as s, | |
to_date((2000+level)*10000 + 0101, 'yyyymmdd') as d, | |
chr(level) as c | |
from dual | |
connect by level <= &row_count; |
declare @row_count int = 100; | |
with seq (s, d, c) as ( | |
select | |
1 as s, | |
cast('2000-01-01' as datetime) as d, | |
char(1) as c | |
union all | |
select | |
s + 1, | |
dateadd(year, 1, d), | |
char(s + 1) | |
from seq | |
where s < @row_count | |
) | |
select * from seq; |
define shift = "6" | |
with v as ( | |
select | |
trunc(sysdate - floor(dbms_random.value()*1000)) as test_dt | |
from dual | |
connect by level <= 10 | |
) | |
select | |
test_dt, | |
to_char(add_months(test_dt, -&shift), 'yyyy') || '-' || to_char(add_months(test_dt, 12-&shift), 'yyyy') as fisc_year, | |
add_months(trunc(add_months(test_dt, -&shift), 'y'), &shift) as fisc_start | |
from v | |
order by test_dt |
declare @shift int = 6 | |
select | |
test_dt, | |
concat(year(dateadd(month, -@shift, test_dt)), '-', year(dateadd(month, 12-@shift, test_dt))) as fisc_year, | |
dateadd(month, @shift, datename(year, dateadd(month, -@shift, test_dt)) + '0101') as fisc_start | |
from (values | |
(getdate()), | |
(cast('2014-03-31' as date)), | |
(cast('2014-04-01' as date)), | |
(cast('2014-07-01' as date)), | |
(cast('2014-12-31' as date)), | |
(cast('2015-01-01' as date)), | |
(cast('2015-03-31' as date)), | |
(cast('2015-04-01' as date)), | |
(cast('2015-06-30' as date)), | |
(cast('2015-07-01' as date)), | |
(cast('2015-12-31' as date)) | |
) v(test_dt) | |
order by test_dt |
with yr_tbl as ( | |
select | |
2000 + level as yr, | |
to_date(101 + (2000+level)*10000, 'yyyymmdd') as jan1, | |
to_date(704 + (2000+level)*10000, 'yyyymmdd') as jul4 | |
from dual | |
connect by level <= 100 | |
) | |
select | |
yr, | |
case | |
when to_char(jan1, 'DY') in ('MON', 'SUN') then trunc(jan1, 'd') + 15 | |
else trunc(jan1, 'd') + 22 | |
end as MLK_DAY, | |
case to_char(jul4, 'DY') | |
when 'SAT' then jul4 - 1 | |
when 'SUN' then jul4 + 1 | |
else jul4 | |
end as IND_DAY | |
from yr_tbl; |
with seq (yr, jan1, jul4) as ( | |
select | |
2001 as yr, | |
cast('2001-01-01' as datetime) as jan1, | |
cast('2001-07-04' as datetime) as jul4 | |
union all | |
select | |
yr + 1, | |
dateadd(year, 1, jan1), | |
dateadd(year, 1, jul4) | |
from seq | |
where yr < 2100 | |
) | |
select | |
yr, | |
case | |
when datename(weekday, jan1) in ('Sunday', 'Monday') then dateadd(day, 16 - datepart(weekday, jan1), jan1) | |
else dateadd(day, 23 - datepart(weekday, jan1), jan1) | |
end as MLK_DAY, | |
case datename(weekday, jul4) | |
when 'Saturday' then dateadd(day, -1, jul4) | |
when 'Sunday' then dateadd(day, 1, jul4) | |
else jul4 | |
end as IND_DAY | |
from seq |