假设我有数据库表 TABLE1 并且有列 COLUMN1 。该列的变量声明设置为VARCHAR(20)
。此外,列值可以是NULL
或EMPTY
。
假设我在该列中有一些“日期”(格式12/01/2011),我需要一个查询来检索日期,不能是NULL
或空,而且日期最多为一年(假设当前日期是2012年1月25日。我需要2011年1月25日之前的日期。)
请帮助。
答案 0 :(得分:0)
将varchar转换为日期,然后对其进行处理。
SELECT convert(date, column1) as date
from table1
where convert(date, column1) < '01/25/2011'
and date is not null and date <> ''
答案 1 :(得分:0)
为什么不使用date
而不是varchar作为您的约会,因为您保留该格式?如果您以YYYY-MM-DD的形式将日期保存为varchar,您甚至可以使用:
SELECT * FROM table1 WHERE column1 < DATE( "2011-01-01" )
但我强烈建议您将其转换为日期,因为它们使用的格式类似于您提供的格式
答案 2 :(得分:0)
SELECT * FROM TABLE1 WHERE CONVERT(DATE, VC_DATE) < CONVERT(DATE,'01/25/2011')
AND LEN(VC_DATE)>0
答案 3 :(得分:0)
SELECT `COLUMN1`
FROM `TABLE1`
WHERE `COLUMN1` is NOT NULL AND
`COLUMN1` != '' AND
STR_TO_DATE(`COLUMN1`, '%m/%d/%Y') < CURRENT_DATE() - INTERVAL 1 YEAR;