Tenemos que guardar el día y el mes de un evento recurrente anual. (Piénselo como el día de su año en que la factura debe enviarse al cliente.)La mejor manera de guardar solo día y mes en la base de datos
Tendremos que hacer algunos cálculos con esta información. Por ejemplo, si el cliente paga dos veces al año. Entonces no solo debemos verificar si este día es hoy sino también si este día es en 6 meses.
Ahora tenemos varias opciones: a) Guardamos la información en un campo FECHA pero ignoramos el año. b) Creamos dos campos int en la base de datos date_day y date_month. c) Creamos un campo varchar y luego realizamos una expresión regular y una división, p. 31.12 cada vez que hacemos algún cálculo.
Hicimos varias pruebas y descubrimos que c) es definitivamente demasiado lento. Pero todavía tenemos la opción a) y b). Primero queríamos ir por b) pero después de algunas pruebas tendemos más a a).
¿Hay una buena razón técnica que realmente haría una opción mucho mejor que la otra?
(Estamos utilizando MySQL por el momento. Si esto es de importancia.)
acordado, que tiene un campo de datos donde se supone que partes de él para ser ignorado son muy malos y probablemente te morderán en el futuro. Yo voto por la opción b. –
Sí, el año no importa. Ya tenemos una fecha de inicio del contrato y una fecha de finalización del contrato. Solo tenemos que calcular si se debe enviar una factura. Y la primera selección que estamos haciendo es verificar si "hoy" está dentro de la fecha de inicio y la fecha de finalización. Solo entonces comprobamos si tenemos que generar una factura hoy. –