To add to the existing Oracle and SQL Server lists, here are my versions of the Teradata equivalents. Perhaps after any discussion and validation, they can be added to the same ‘Sticky’:
Yesterday:
DATE-1
Today:
DATE
Start of Current Month:
(DATE - DAYOFMONTH(DATE))+1
End of Current Month:
ADD_MONTHS((DATE - DAYOFMONTH(DATE))+1,1)-1
Start of Previous Month:
ADD_MONTHS((DATE - DAYOFMONTH(DATE))+1,-1)
End of Previous Month:
(DATE - DAYOFMONTH(DATE))
Start of Current Quarter:
CASE WHEN MONTH(Date) BETWEEN 1 AND 3
THEN CAST(((Date / 10000) * 10000) + 101 AS DATE)
WHEN MONTH(Date) BETWEEN 4 AND 6
THEN CAST(((Date / 10000) * 10000) + 401 AS DATE)
WHEN MONTH(Date) BETWEEN 7 AND 9
THEN CAST(((Date / 10000) * 10000) + 701 AS DATE)
WHEN MONTH(Date) BETWEEN 10 AND 12
THEN CAST(((Date / 10000) * 10000) + 1001 AS DATE)
END
End of Current Quarter:
CASE WHEN MONTH(Date) BETWEEN 1 AND 3
THEN CAST(((Date / 10000) * 10000) + 331 AS DATE)
WHEN MONTH(Date) BETWEEN 4 AND 6
THEN CAST(((Date / 10000) * 10000) + 630 AS DATE)
WHEN MONTH(Date) BETWEEN 7 AND 9
THEN CAST(((Date / 10000) * 10000) + 930 AS DATE)
WHEN MONTH(Date) BETWEEN 10 AND 12
THEN CAST(((Date / 10000) * 10000) + 1231 AS DATE)
END
Start of Previous Quarter:
ADD_MONTHS(CASE WHEN MONTH(Date) BETWEEN 1 AND 3
THEN CAST(((Date / 10000) * 10000) + 101 AS DATE)
WHEN MONTH(Date) BETWEEN 4 AND 6
THEN CAST(((Date / 10000) * 10000) + 401 AS DATE)
WHEN MONTH(Date) BETWEEN 7 AND 9
THEN CAST(((Date / 10000) * 10000) + 701 AS DATE)
WHEN MONTH(Date) BETWEEN 10 AND 12
THEN CAST(((Date / 10000) * 10000) + 1001 AS DATE)
END,-3)
End of Previous Quarter:
(CASE WHEN MONTH(Date) BETWEEN 1 AND 3
THEN CAST(((Date / 10000) * 10000) + 101 AS DATE)
WHEN MONTH(Date) BETWEEN 4 AND 6
THEN CAST(((Date / 10000) * 10000) + 401 AS DATE)
WHEN MONTH(Date) BETWEEN 7 AND 9
THEN CAST(((Date / 10000) * 10000) + 701 AS DATE)
WHEN MONTH(Date) BETWEEN 10 AND 12
THEN CAST(((Date / 10000) * 10000) + 1001 AS DATE)
END)-1
Start of Current Year:
(DATE-DAYOFYEAR(DATE))+1
End of Current Year:
ADD_MONTHS(DATE-DAYOFYEAR(DATE)+1,12)-1
Start of Previous Year:
ADD_MONTHS((DATE-DAYOFYEAR(DATE))+1,-12)
End of Previous Year:
DATE-DAYOFYEAR(DATE)
Current Working Week Start Day (which would be a Monday):
(DATE-DAYOFWEEK(DATE))+2
Prior Working Week Start Day (which would be last Monday):
(DATE-DAYOFWEEK(DATE))-5
Prior Working Week End Day (which would be a Friday):
(DATE-DAYOFWEEK(DATE))-1
anorak (BOB member since 2002-09-13)