Calculate the annual use of a service starting from the date of signing

I need to calculate the annual use of a service starting from the date of signing. Something like:

select Count(*) from TABLENAME where Date >= MYDATE

MYDATE need to be calculate from a subscription date and I need to get the last year date from subscription referring to the current date

Some examples:

subscription date: 2007-06-29

if current date is : 2015-04-29 then date is: 2014-06-29

if current date is : 2015-06-29 then date is: 2015-06-29

if current date is : 2015-06-29 then date is: 2015-06-29

I'm using c# to calculate the date but it crashes in leapyear:

var date = new DateTime(DateTime.Now.Year, subscriptionDate.Month, subscriptionDate.Day);
if (DateTime.Now.Date < date)
{
    date = date.AddYears(-1);
}

I was wondering if there were a clever/better way to do it in c# or mysql also handling leapyear

---UPDATE----

Running example with suggested solutions

Jon Skeet
people
quotationmark

Well, I'd do it in Noda Time, myself:

LocalDate subscriptionDate = ...;
LocalDate today = ...; // Need to take time zone into account
int years = Period.Between(subscriptionDate, today);
return subscription.PlusYears(years);

With .NET that would be slightly harder, but I'd still go for the approach of adding years (and letting it do the truncation for Feb 29th):

// Only call this *once* - otherwise you could get inconsistent results
DateTime today = DateTime.Today;
int years = today.Year - subscriptionDate.Year;
DateTime candidate = subscriptionDate.AddYears(years);
// We might have overshot, in which case lower the number of years.
return candidate <= today ? candidate : subscriptionDate.AddYears(years - 1);

people

See more on this question at Stackoverflow