• I don't know if there's a best way. Bob has one way here: http://www.sqlservercentral.com/articles/calendar/145206/

    Some people  create a dimension table, and use an int as a PK with values such as 20180130. They would still have the date listed, but in this way, the PK is also human readable.