Answers.Body: <p>Memberships have three primary dates, the join date (member since), start date and end date. The join date is the date the contact first signed up for a membership with your organisation. Unless it is altered manually it will never change from that first value. The start date is the date the current continuous period of membership began. The end date is the last day of the current membership.</p>
  
  <p>Examples for a 12 month membership:  </p>
  
  <ul>
  <li>Mary joined on 1/1/2011 and has always paid her annual membership fees when they are due  She will have a <strong>member since</strong> date of 1/1/2011 and a <strong>start date</strong> of 1/1/2011 as she has been continuously financial since 1/1/2011.</li>
  <li>Peter joined on 1/1/2011. At the end of 2011 he let his membership lapse.  He rejoined on 1/1/2014 and has paid his membership fess regularly since then  when they are due.  He will have a <strong>member since</strong> date of 1/1/2011 but a <strong>start date</strong> of 1/1/2014 as he has been continuously financial only since 1/1/2014.</li>
  </ul>
  
  <p>So your member who joined in 2012 (presumably for 1 year)  but didn't renew until 2016 should have <strong>member since</strong> = 1/1/2012 and <strong>start date</strong> = 1/1/2016. </p>
  
  <p>The exact search filters you need to use depend on the duration of your memberships, whether they are fixed or rolling (rolling makes it much more difficult) and what hapens if they join on, say, 1 October rather than on 1 January.</p>
  
  <p>Assuming a fixed 12 month membership that always start on 1 January you can find all <strong>contacts</strong> who joined previously, are currently financial(2016) but weren't financial last year (2015) by using Advanced Search with membership filters:
   - <strong>member since</strong> "To" date of 1/1/2014 (no need to set "From" date)
   - <strong>start date</strong> "From" date of 1/1/2016 (no need to set "To" date)</p>
  
  <p>This won't work if you have modified the membership settings somehow (perhaps by setting <strong>member = yes</strong> for the expired membership status), or if this is a new CiviCMR install and the old membership data wasn't imported correctly.</p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2016-03-11T16:33:47.527Z
Answers.Text: Hi, I am stumbling over your use of the word "continuous".  I read that as meaning that if there are skipped years, it creates a NEW membership record for the next continuous membership period?  Or do you not really mean "continuous"?
Answers.UserDisplayName: Rob Brandt
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2016-03-12T02:27:36.730Z
Answers.Text: I have expanded my answer to explain "continuous" in terms on CiviCRM memberships.
Answers.UserDisplayName: JoAnne
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2016-03-11T00:06:05.407Z
Answers.LastActivityDate: 2016-03-12T02:59:05.623Z
Answers.LastEditDate: 2016-03-12T02:59:05.623Z
Answers.UserDisplayName: JoAnne
Answers.Body: <p>This data for each individual membership purchase is stored in the <code>civicrm_membership_log</code> table - which I don't think is exposed by any of the CiviCRM UI.  My recollection is that you're a coder - so you should be able to query that table, instead of <code>civicrm_membership</code>, which is what the CiviCRM UI uses.</p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2016-03-11T04:14:08.017Z
Answers.LastActivityDate: 2016-03-11T04:14:08.017Z
Answers.UserDisplayName: Jon G - Megaphone Tech
Body: <p>We are trying to come up with some reports that show retention rates over the years.  I had thought that I would be able to do a include/exclude search where I include members from 2015 and exclude members from 2016 to show who had dropped out, but the 2015 members are problematic.  For example, we have a member who joined in 2012, and did not renew until 2016.  With a start date of 1/1/2012 and an end date of 12/31/2016, there is no data point which shows whether they were an actual member in 2015.  In addition, many of our memberships are free, so there is no transaction to query.</p>
  
  <p>Any idea how to do this?</p>
  
Tags: <civimember><search><reports>
Title: Were they a member last year?
ThreadText: # Were they a member last year?
  
  (Asked by: username_0 on 2016-03-10)
  
  We are trying to come up with some reports that show retention rates over the years. I had thought that I would be able to do a include/exclude search where I include members from 2015 and exclude members from 2016 to show who had dropped out, but the 2015 members are problematic. For example, we have a member who joined in 2012, and did not renew until 2016. With a start date of 1/1/2012 and an end date of 12/31/2016, there is no data point which shows whether they were an actual member in 2015. In addition, many of our memberships are free, so there is no transaction to query.
  
  Any idea how to do this?
  
  **Tags:** civimember, search, reports
  
  
  ---
  
  ## 2 answers
  
  ### Answer by username_1 on 2016-03-11. Score: 7
  
  Memberships have three primary dates, the join date (member since), start date and end date. The join date is the date the contact first signed up for a membership with your organisation. Unless it is altered manually it will never change from that first value. The start date is the date the current continuous period of membership began. The end date is the last day of the current membership.
  
  Examples for a 12 month membership:
  
  * Mary joined on 1/1/2011 and has always paid her annual membership fees when they are due She will have a **member since** date of 1/1/2011 and a **start date** of 1/1/2011 as she has been continuously financial since 1/1/2011.
  * Peter joined on 1/1/2011. At the end of 2011 he let his membership lapse. He rejoined on 1/1/2014 and has paid his membership fess regularly since then when they are due. He will have a **member since** date of 1/1/2011 but a **start date** of 1/1/2014 as he has been continuously financial only since 1/1/2014.
  
  So your member who joined in 2012 (presumably for 1 year) but didn't renew until 2016 should have **member since** = 1/1/2012 and **start date** = 1/1/2016.
  
  The exact search filters you need to use depend on the duration of your memberships, whether they are fixed or rolling (rolling makes it much more difficult) and what hapens if they join on, say, 1 October rather than on 1 January.
  
  Assuming a fixed 12 month membership that always start on 1 January you can find all **contacts** who joined previously, are currently financial(2016) but weren't financial last year (2015) by using Advanced Search with membership filters:
  - **member since** "To" date of 1/1/2014 (no need to set "From" date)
  - **start date** "From" date of 1/1/2016 (no need to set "To" date)
  
  This won't work if you have modified the membership settings somehow (perhaps by setting **member = yes** for the expired membership status), or if this is a new CiviCMR install and the old membership data wasn't imported correctly.
  
  > **Comments:**
  > **username_0**: Hi, I am stumbling over your use of the word "continuous".  I read that as meaning that if there are skipped years, it creates a NEW membership record for the next continuous membership period?  Or do you not really mean "continuous"?  
  > **username_1**: I have expanded my answer to explain "continuous" in terms on CiviCRM memberships.  
  
  ---
  
  ### Answer by username_2 on 2016-03-11. Score: 3
  
  This data for each individual membership purchase is stored in the `civicrm_membership_log` table - which I don't think is exposed by any of the CiviCRM UI. My recollection is that you're a coder - so you should be able to query that table, instead of `civicrm_membership`, which is what the CiviCRM UI uses.
  
  
  ---
  
  