从列中的列变量类型为Varchar的表中选择Date

时间:2012-01-25 21:25:38

标签: sql sql-server-2008

假设我有数据库表 TABLE1 并且有列 COLUMN1 。该列的变量声明设置为VARCHAR(20)。此外,列值可以是NULLEMPTY

假设我在该列中有一些“日期”(格式12/01/2011),我需要一个查询来检索日期,不能是NULL或空,而且日期最多为一年(假设当前日期是2012年1月25日。我需要2011年1月25日之前的日期。)

请帮助。

4 个答案:

答案 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;