【发布时间】:2020-02-10 02:37:54
【问题描述】:
我有以下问题。我正在计算 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);
示例
以上是原样的数据。现在我在以下查询的WHERE 子句中将日期 20200601 作为参数传递,它应该在从 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);
【问题讨论】:
-
示例数据在这里会有所帮助。
-
它只是一个十进制数据类型,以 YYYYMMDD 格式返回数字形式的日期,如 20191107。