The table I am using stores date values as strings due to conversion data. The format is 2000-07-01 for July 1, 2000. I need to be able to age amounts for an accounting report at any time, such as 0-30, 30-60, etc. Normally, I would just use a statement such as
DATE(current date) - DATE(table_date) between 30 and 60, but it won't work because the "table-date" is not a DATE field. I've been hard-coding the dates and using the between statement, but that's not good for other users.
Can I change the string '2000-07-01' to a DATE field?
Well, your column data type is varchar so you'll have to do the calculations in your SELECT statement. You can use the CAST function to convert the string to a date. Let's assume you have a table called TestTable with a datestring column and these values:
You can use this query to find the aged records by comparing the datestring column to today's date:
WHERE GETDATE() - CAST(datestring AS datetime)
BETWEEN 30 AND 60