Ambas fórmulas son correctas, pero su uso depende en gran medida del lugar, como se explica en el Diccionario panhispánico de dudas.
Buenos días es el saludo que se emplea durante la mañana en el español general y buen día es la forma predominante en el español americano y en algunas zonas de España.