Version 2021

Date and Time Function

MicroStrategy pushes the calculations for the following list of built-in date and time functions down to PostgreSQL using the associated SQL patterns.

Function

SQL Pattern or Example

AddDays

(#0 + #1 * INTERVAL '1 DAY')  

AddMonths

(#0 + #1 * INTERVAL '1 MONTH')              

CurrentDate

CURRENT_DATE

CurrentDatetime

CURRENT_TIMESTAMP

CurrentTime

CURRENT_TIME

Date

CAST(#0 AS DATE)

DayOfMonth

EXTRACT(DAY FROM #0)     

DayOfWeek

(EXTRACT(DOW FROM #0) + 1)      

DayOfYear

EXTRACT(DOY FROM #0)    

DaysBetween

(CAST(#1 AS DATE) - CAST(#0 AS DATE))               

Hour

EXTRACT(HOUR FROM #0)

MilliSecond

(EXTRACT(MILLISECONDS FROM #0) % 1000) :: integer

Minute

EXTRACT(MINUTE FROM #0)

Month

EXTRACT(MONTH FROM #0)

MonthEndDate

(CAST(#0 AS DATE) + INTERVAL '1 MONTH' - EXTRACT(DAY FROM (#0 + INTERVAL '1 MONTH')) * INTERVAL '1 DAY')

MonthsBetween

(12 * (EXTRACT(YEAR FROM #1) - EXTRACT(YEAR FROM #0)) + EXTRACT(MONTH FROM #1) - EXTRACT(MONTH FROM #0) - (CASE WHEN EXTRACT(DAY FROM #0) > EXTRACT (DAY FROM #1) THEN 1 ELSE 0 END))

MonthStartDate

(CAST(#0 AS DATE) - (EXTRACT(DAY FROM #0)  - 1) * INTERVAL '1 DAY')

Quarter

EXTRACT(QUARTER FROM #0)    

Second

CAST(BTRIM(CAST(EXTRACT(SECOND FROM #0)AS CHAR(2)),'.')AS INT)

Week

EXTRACT(WEEK FROM #0)

Year

EXTRACT(YEAR FROM #0)

YearEndDate

(CAST(#0 AS DATE) + (13 - EXTRACT(MONTH FROM #0)) * INTERVAL '1 MONTH' - EXTRACT(DAY FROM #0) * INTERVAL '1 DAY')

YearStartDate

(CAST(#0 AS DATE) - (EXTRACT(DAY FROM #0) - 1) * INTERVAL '1 DAY' - (EXTRACT(MONTH FROM #0) - 1) * INTERVAL '1 MONTH')

MicroStrategy use the analytical engine to implement date and time function below:

Function Example of Analytical SQL calculated by the Analytical Engine

DateDiff

DateDiff(WJXBFS1, WJXBFS2, d)

FiscalWeek

FiscalWeek(WJXBFS1)

ToDateTime

ToDateTime(WJXBFS1)

FiscalMonth

FiscalMonth(WJXBFS1)

FiscalQuarter

FiscalMonth(WJXBFS1)

FiscalYear

FiscalMonth(WJXBFS1)

QuarterStartDate

QuarterStartDate(WJXBFS1)

WeekStartDate

WeekStartDate(WJXBFS1)