Link to home
Start Free TrialLog in
Avatar of jjc9809
jjc9809

asked on

Access 2007 Question on Formulas inside a query

Hi Everyone,

I have a query that I am trying to find the difference between dates and determine the number of days and months.

My query has a field called DateTo that comes in from the database.  this date will be 12/31/2011 for every employee 1 through 910.
I also have a field called LVProgDate which is the Date a Person started to work.  This date will be different for each employee.
I have to format the LVPROGDATE because it comes in from the mainfraim as 2011/12/14 for eaxmple so I have a field inside my query with this Formula:
Expr1: CDate(Mid([LPROGDATE],6,2) & "/" & Right([LPROGDATE],2) & "/" & Left([LPROGDATE],4))

I have another field called TotalDays with this formula:  Total Days: DateDiff("d",[Expr1],[DateTo])

I have another field called TotalMonths with this formula:  Total Months: [Total Days]/365*12

The problem I am having is the Total Days are off sometimes with the system which makes my Total Months be off.

How can I write the formulas to be right on the money, because I need the right Total Months figure in order to figure an employee's longevity pay for the year which is determined by how many months an employee has worked to date?

Thanks

jjc9809
Avatar of Jeffrey Coachman
Jeffrey Coachman
Flag of United States of America image

"Off" by how much"?
Under what circumstances?
Can you provide a specific example...?

This is tricky with DateDiff, because of rounding.
You also have to sometimes consider the Time as well (A "Date" will default to approx Midnight) to get an accurate calculation of "Days"
Confirm LvProgDate from the mainframe is a string?  If so, and your system short date format is dd/mm/yyyyy, then CDate("2011/12/14") should produce a date 12/14/2011.  You can test this in the Immediate Pane (Alt+F11) by typing:

? Date()
10/31/2011 '  this confirms the short date format

? CDate("2011/12/14")
12/14/2011   'ie.  you do not need to tear the string apart and re-assemble it in the manner you showed.

Confirm for a LvProgDate of 07/01/2011 the span is 5 months 30 days?
Avatar of jjc9809
jjc9809

ASKER

You are right CDate(LVPROGDATE) produces the 12/14/2011.  

Does the DateDiff work effectively with the formula I showed you?

ASKER CERTIFIED SOLUTION
Avatar of GRayL
GRayL
Flag of Canada image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
jjc9809,

What I was referring to was the confusion many people may feel when using DateDiff.
For ex:
DateDiff("M", #1/30/2011#, #2/2/2011#)
...will yield "1" ...and many people will wonder why.
Because there is technically only a 3 "Day" difference in actual "Days", yet in "Months" this difference is 1.

The key here is to use the exact "Interval" that you need.


It looks like Ray have you covered here, so I'll let you continue with him to avoid confusion.

;-)

Jeff
Avatar of jjc9809

ASKER

I am going to ask another question that is related to this.  The date problem is solved, but I have another issue I got to solve now.
If this and the new question are related, be sure to refer this this question in your new one.
BTW, thanks, glad to help.