Here are routines that can handle date arithmetic on BC dates, Julian day functions, and simulation of Oracle's support of old-style-calendar dates -- including simulation of an Oracle bug. So the routines are good for extending the range of useable dates, compact storage, and import/export between DBMSs that have different rules.
If you need to refresh your understanding of dates, read our old-but-lovely article first: The Oracle Calendar.
I wrote the main routines with standard SQL so they should run
any DBMS that supports the standard, but tested only with
MySQL and MariaDB.
Return number of days since 4713-01-01, given yyyy-mm-dd [BC] date
Return okay or error, given yyyy-mm-dd BC|AD date which may be invalid
Return number of days …