A ver si te sirve:
por lo que veo entran en juego minimamente 2 tablas, una con datos de usuario (le llamaremos tabla USUARIO) y otra con rangos de fechas relacionadas a los usuarios (a esta le llamaremos USUARIO_RANGO)
Piensa que la tabla USUARIO tiene 2 campos (IdUsuario INT, TipoUsuario INT)
Y la tabla USUARIO_RANGO tiene 3 campos (IdUsuario INT, FechaVIP DATETIME, FechaVen DATETIME)
Si creas un proceso que se ejecute a diario con una instruccion similar a esta:
Código SQL:
Ver originalUPDATE A SET TipoUsuario = 1
FROM USUARIO A
INNER JOIN USUARIO_RANGO B ON a.IdUsuario=b.IdUsuario
WHERE CONVERT(VARCHAR(8),b.FechaVIP,112) = CONVERT(VARCHAR(8),GETDATE(),112);
Podrás poner en TipoUsuario=1 todos los usuarios que tengan FechaVIP = a la fecha actual
Entiende por fecha actual a la fecha en la ejecutes el procesos.
Espero te sirva. Saludos!!