Sql 如何查询日期格式不正确的列

Sql 如何查询日期格式不正确的列,sql,pervasive-sql,Sql,Pervasive Sql,以下是日期的格式: XXXXXX001221 这个日期是12月21日 如果我想使用CURDATE()函数获取昨天的条目,我该怎么做呢?如果你只是在做月日(索引基于CURDATE()的字符串格式,即YYYY-MM-DD): 或者使用EXTRACT()的另一种方法: 今年也是: SELECT * FROM table_name WHERE date_field LIKE CONCAT('%', SUBSTR(DATE_SUB(CURDATE(), INTERVAL 1 DAY) FROM

以下是日期的格式:

 XXXXXX001221
这个日期是12月21日


如果我想使用CURDATE()函数获取昨天的条目,我该怎么做呢?

如果你只是在做月日(索引基于CURDATE()的字符串格式,即YYYY-MM-DD):

或者使用EXTRACT()的另一种方法:




今年也是:

SELECT * FROM table_name
WHERE date_field LIKE
  CONCAT('%', SUBSTR(DATE_SUB(CURDATE(), INTERVAL 1 DAY) FROM 3 FOR 2),
              SUBSTR(DATE_SUB(CURDATE(), INTERVAL 1 DAY) FROM 6 FOR 2),
              SUBSTR(DATE_SUB(CURDATE(), INTERVAL 1 DAY) FROM 9 FOR 2));


SELECT * FROM table_name
WHERE date_field LIKE
  CONCAT('%', EXTRACT(YEAR FROM DATE_SUB(CURDATE(), INTERVAL 1 DAY)),
              EXTRACT(MONTH FROM DATE_SUB(CURDATE(), INTERVAL 1 DAY)),
              EXTRACT(DAY FROM DATE_SUB(CURDATE(), INTERVAL 1 DAY)));



编辑:您可以使用代码中提到的
WHERE RIGHT(date\u field,6)=…
而不是像…这样的
WHERE-RIGHT(date\u field,6)=…

SELECT * FROM table_name
WHERE RIGHT(date_field, 4) =
  CONCAT(EXTRACT(MONTH FROM DATE_SUB(CURDATE(), INTERVAL 1 DAY)),
         EXTRACT(DAY FROM DATE_SUB(CURDATE(), INTERVAL 1 DAY)));

SELECT * FROM table_name
WHERE RIGHT(date_field, 6) =
  CONCAT(EXTRACT(YEAR FROM DATE_SUB(CURDATE(), INTERVAL 1 DAY)),
         EXTRACT(MONTH FROM DATE_SUB(CURDATE(), INTERVAL 1 DAY)),
         EXTRACT(DAY FROM DATE_SUB(CURDATE(), INTERVAL 1 DAY)));
注意:您也可以使用变量始终保存计算日期(CURDATE(),间隔1天)

SET @yesterday = DATE_SUB(CURDATE(), INTERVAL 1 DAY);
SELECT ...
尝试以下方法:

SELECT * FROM table WHERE RIGHT(date_col, 6) = (SELECT CONVERT(VARCHAR(6), GETDATE()-1, 12) AS [YYMMDD])

“00”代表2010年吗?如果是,怎么办?那是哪一年?2000?
SET @yesterday = DATE_SUB(CURDATE(), INTERVAL 1 DAY);
SELECT ...
SELECT * FROM table WHERE RIGHT(date_col, 6) = (SELECT CONVERT(VARCHAR(6), GETDATE()-1, 12) AS [YYMMDD])