You can CAST the character string to a datetime, then select and sort on it; the DateDiff function will take character string that looks like a date as input (in SQL Server, anyway) so no CAST is necessary:
SELECT CAST(CreatedDate as datetime) as DateCreated, ...
ORDER by DateCreated DESC;
BTW, your specification "...all posts older than a month..." can be subject to differing interpretations; do you mean 'in last month or before', or 'more than 30 or 31 days old', or what? The DATEDIFF function counts boundary crossings, so a post on Christmas last year would return a 1 in the expression above.
Custom Apps, Inc.