我有一个充满日期的字段,但它们存储为 varchars。它们采用以下格式:
- 01312013
- 01302013
- 09232007
我正在尝试编写一个仅返回满足以下三个条件的记录的查询:
- 上述varchar“日期”的最后四个字符匹配上个月的年份
- 上述 varchar“日期”的前两个字符与上个月匹配。
- 完全不同的日期字段(实际存储为日期)中的值在上个月内
我的尝试使我试图将上个月的年份和上个月的年份存储在两个变量中,然后对 varchar“日期”执行 LEFT() 和 RIGHT() 查找以查看它们是否匹配这两个变量。唷。
问题是 MONTH 被存储为单个数字,我需要将其存储为“0”+月份数字(仅在单个数字月份的情况下)。而且它甚至不工作只是一年所以也许这完全关闭了。真的希望有人能帮忙!
这是我到目前为止所拥有的:
DECLARE @monthAgo dateTime
DECLARE @MonthString char
DECLARE @YearString char
SET @monthAgo = DATEADD(month, -1, GETDATE())
SET @MonthString = MONTH(@monthAgo) -- not working
SET @YearString = YEAR(@monthAgo) -- not working
SELECT
COUNT(*)
FROM
jwemaildb.LogFileRecords
WHERE
date > = DATEADD(month, DATEDIFF(month, 0, GETDATE())-1, 0) AND
date < DATEADD(month, DATEDIFF(month, 0, GETDATE()), 0) AND
RIGHT(eAlertSentDate, 4) = @YearString AND
LEFT (eAlertSentDate, 2) = @MonthString