In Microsoft SQL Server (MS SQL) you can use DATEPART function to extract the specified unit (a date part such as year, month, day etc.) from a datetime value as number.
In PostgreSQL you can use DATE_PART function but note that unit can be different and specified as a string literal.
SQL Server:
-- Get the day SELECT DATEPART(day, '2023-07-24'); # 24
PostgreSQL:
-- Get the week day SELECT DATE_PART('day', '2023-07-24'::date); # 24
You can map SQL Server DATEPART units to the appropriate DATE_PART units in PostgreSQL as follows:
SQL Server | PostgreSQL | Output Example | ||
yy | year | DATEPART(yy, GETDATE()) | DATE_PART('year', NOW()) | 2024 |
quarter | DATEPART(qq, GETDATE()) | DATE_PART('quarter', NOW()) | 3 | |
mm | month | DATEPART(mm, GETDATE()) | DATE_PART('month, NOW()) | 7 |
wk | week | DATEPART(wk, GETDATE()) | DATE_PART('week', NOW()) | 30 |
dd | day | DATEPART(dd, GETDATE()) | DATE_PART(NOW(), 'DD') | 29 |
dy | dayofyear | DATEPART(dy, GETDATE()) | DATE_PART('doy', NOW()) | 205 |
dw | weekday | DATEPART(dw, GETDATE()) | DATE_PART('dow', NOW()) | 1 |
hh | hour | DATEPART(hh, GETDATE()) | DATE_PART('hour', NOW()) | 13 |
mi | minute | DATEPART(mi, GETDATE()) | DATE_PART('minute', NOW()) | 31 |
ss | second | DATEPART(ss, GETDATE()) | DATE_PART('second', NOW()) | 11 |
ms | millisecond | DATEPART(ms, GETDATE()) | DATE_PART('milliseconds', NOW()) | 777 |
For more information, see SQL Server to PostgreSQL Migration.