Sql 如何检索表ex中的varchar数据:“2012/05/01 09:42”

Sql 如何检索表ex中的varchar数据:“2012/05/01 09:42”,sql,oracle,record,varchar,Sql,Oracle,Record,Varchar,我在Intime表中几乎没有数据,比如2012/05/01 09:41 2012/05/05 09:47 2012/05/07 08:30 2012/05/09 08:45 2012/05/10 09:41 因为我希望数据像大于2012/05/01 09:30的查询会像 从表中选择Intime,其中Intime>2012/05/01 09:30仅获取2012/05/01而非09:30。Intime的数据类型为varchar2您需要将varchar2列转换为日期,然后进行比较。您需要这样使用它:

我在Intime表中几乎没有数据,比如2012/05/01 09:41 2012/05/05 09:47 2012/05/07 08:30 2012/05/09 08:45 2012/05/10 09:41

因为我希望数据像大于2012/05/01 09:30的查询会像

从表中选择Intime,其中Intime>2012/05/01 09:30仅获取2012/05/01而非09:30。Intime的数据类型为varchar2

您需要将varchar2列转换为日期,然后进行比较。您需要这样使用它:

SELECT TO_DATE (Intime, 'YYYY/MM/DD HH:MI') D_ATE
FROM TABLE    
WHERE to_date(Intime ,'YYYY/MM/DD HH:MI') > to_date('2012/05/01 09:30','YYYY/MM/DD HH:MI');
演示:


你还没有说你在问哪种语言和系统。@BrianTompsett-汤莱恩 oracle数据库和jspIf如果Intime的数据类型是varchar2,那么首先您的where子句将不使用单引号进行计算。第二,我可能认为结果集没有时间处理它。检查coulmn是否包含您指定的数据。永远不要将日期存储为VARCHAR。立即修复数据模型。To_date函数将varchar转换为date。阅读更多
 with dt_tbl (Intime) as ( select '2012/05/01 09:30' from dual
                         UNION ALL
                         select '2012/05/01 09:42' from dual
                         UNION ALL
                         select '2012/05/01 09:29' from dual
                         UNION ALL
                         select '2012/05/01 09:35' from dual)
SELECT TO_DATE (Intime, 'YYYY/MM/DD HH:MI') D_ATE
FROM dt_tbl    
WHERE to_date(Intime ,'YYYY/MM/DD HH:MI') > to_date('2012/05/01 09:30','YYYY/MM/DD HH:MI');