我有以下查询。我正在计算MYDATE列,该列是一种DECIMAL(8, 0)数据类型,它以 YYYYMMDD 格式以数字形式存储 datea,例如 20191107。
SELECT DECIMAL((TO_CHAR(TO_DATE(CAST(CAST(MYDATE AS INT) AS VARCHAR(8)), 'yyyymmdd') - 3 MONTHS, 'yyyymmdd')), 8, 0) FROM PDF_TABLE;
它工作正常。但是,当我在如下子句中使用上述转换时WHERE,查询不会返回任何内容。
SELECT * FROM PDF_TABLE WHERE MYDATE = DECIMAL((TO_CHAR(TO_DATE(CAST(CAST(MYDATE AS INT) AS VARCHAR(8)), 'yyyymmdd') - 3 MONTHS, 'yyyymmdd')), 8, 0);
例子
以上是数据。现在我在以下查询的子句中将日期 20200601 作为参数传递WHERE,它应该在从 20200601 中减去 3 个月后返回下一行。
SELECT * FROM PDF_TABLE WHERE MYDATE = DECIMAL((TO_CHAR(TO_DATE(CAST(CAST(MYDATE AS INT) AS VARCHAR(8)), 'yyyymmdd') - 3 MONTHS, 'yyyymmdd')), 8, 0);

