在 Oracle sql 中获取无效月份
Getting not valid month in Oracle sql
我有一个名为 Transactions
的 table,它有一个名为 trans_date
的列。我只是想在 SQL*Plus 命令 window
中做一个简单的查询
查询是
SELECT * FROM transactions WHERE
trans_date BETWEEN to_date('09/11/2021','mm/dd/yyyy') AND to_date('09/12/2021','mm/dd/yyyy');
当我 运行 这个查询时,我得到无效的月份并且 trans_date
下有一点 *
。我读过的大部分内容都表明查询是正确的,但我不确定问题出在哪里。数据类型为 varchar2(20).
由于 trans_date
是一个 varchar
,而您要查询它是否介于两个 date
之间,您也需要将其转换为 date
。假设它与查询中的文字具有相同的格式:
SELECT *
FROM transactions
WHERE to_date(trans_date, 'mm/dd/yyy') BETWEEN
to_date('09/11/2021','mm/dd/yyyy') AND to_date('09/12/2021','mm/dd/yyyy');
似乎问题出在列数据类型上,请尝试将其转换为日期,
SELECT * FROM transactions
WHERE to_date(trans_date,'mm/dd/yyyy') BETWEEN to_date('09/11/2021','mm/dd/yyyy') AND to_date('09/12/2021','mm/dd/yyyy');
您需要将 trans_date
转换为日期。但是,您可以使用日期常量进行比较:
SELECT *
FROM transactions
WHERE to_date(trans_date, 'mm/dd/yyyy') BETWEEN DATE '2021-09-11' AND DATE '2021-09-12';
您应该修复数据模型,以便使用 Oracle 的内置数据类型正确存储日期。
我有一个名为 Transactions
的 table,它有一个名为 trans_date
的列。我只是想在 SQL*Plus 命令 window
查询是
SELECT * FROM transactions WHERE
trans_date BETWEEN to_date('09/11/2021','mm/dd/yyyy') AND to_date('09/12/2021','mm/dd/yyyy');
当我 运行 这个查询时,我得到无效的月份并且 trans_date
下有一点 *
。我读过的大部分内容都表明查询是正确的,但我不确定问题出在哪里。数据类型为 varchar2(20).
由于 trans_date
是一个 varchar
,而您要查询它是否介于两个 date
之间,您也需要将其转换为 date
。假设它与查询中的文字具有相同的格式:
SELECT *
FROM transactions
WHERE to_date(trans_date, 'mm/dd/yyy') BETWEEN
to_date('09/11/2021','mm/dd/yyyy') AND to_date('09/12/2021','mm/dd/yyyy');
似乎问题出在列数据类型上,请尝试将其转换为日期,
SELECT * FROM transactions
WHERE to_date(trans_date,'mm/dd/yyyy') BETWEEN to_date('09/11/2021','mm/dd/yyyy') AND to_date('09/12/2021','mm/dd/yyyy');
您需要将 trans_date
转换为日期。但是,您可以使用日期常量进行比较:
SELECT *
FROM transactions
WHERE to_date(trans_date, 'mm/dd/yyyy') BETWEEN DATE '2021-09-11' AND DATE '2021-09-12';
您应该修复数据模型,以便使用 Oracle 的内置数据类型正确存储日期。