You can use the date type when inserting and updating the records. For you date added you probably want to use the time of the insert for the this. For the other values you can make use of php's date formatting functions to manipulate dates.
I'm sure that the start date will be chosen but the end date will need to be calculated. One way to do this would be to use the php mktime and date functions. This will require some hand coding to manipulate the dates the way that you will need them. Here is an example of how you could add x number of months to the start date to calculate the end date:
$subscription_months = <number of months in subscription>; //store the number of moths for the subscription
$hour = date("H", strtotime(Subscription_Start date)); //get the hour of the start time
$minute = date("i", strtotime(Subscription_Start date)); //get the minute of the start time
$second = date("s", strtotime(Subscription_Start date)); //get the second of the start time
$month = date("m", strtotime(Subscription_Start date)); //get the month of the start time
$day = date("d", strtotime(Subscription_Start date)); //get the day of the start time
$year = date("Y", strtotime(Subscription_Start date)); //get the year of the start time
$Subscription_End date = date("Y-m-d H:i:s", mktime($hour, $minute, $second, $month + $subscription_months, $day, $year)); //to calculate the end date use mktime and set it to the start date piece by peace, for the month you can just add the number of months that the user purchased. The date function here is formatting the timestamp that mktime creates to match the standard date and time formatting for date columns.
This method makes use of the date and times functions for php, here are links to these pages:
strtotime:
php.net/strtotime
mktime:
php.net/manual/en/function.mktime.php
date:
php.net/manual/en/function.date.php