Oracle 数据类型Varchar2到日期格式

Oracle 数据类型Varchar2到日期格式,oracle,varchar2,Oracle,Varchar2,我正在编写SQL代码以提取大于或等于2018年9月24日00:00:00的有效开始日期的数据。我的有效开始日期数据类型在varchar2中。下面是我正在使用的代码: TO_DATE(TRUNC(effective_start_date),'DD/MM/YY') >='24/09/2018 00:00:00') 试试这个: select case when Cast(effective_start_date as dateTime) >= cast('2018/09/24 00:

我正在编写
SQL
代码以提取大于或等于2018年9月24日00:00:00的有效开始日期的数据。我的有效开始日期数据类型在
varchar2
中。下面是我正在使用的代码:

TO_DATE(TRUNC(effective_start_date),'DD/MM/YY') >='24/09/2018 00:00:00')
试试这个:

select case
 when  Cast(effective_start_date as dateTime) >= cast('2018/09/24 00:00:00' as dateTime) 
 then 1 --your business
 else 
 0  --your business
 end
您可以尝试以下方法:

trunc(to_date( effective_start_date, 'DD/MM/YYYY HH24:MI:SS' )) >= to_date('24/09/2018 00:00:00', 'DD/MM/YYYY HH24:MI:SS')

将datetime存储为varchar是非常错误的。

您好,谢谢您的回复。我的数据包含日期格式为dd/mm/yyyy 00:00:00的有效开始日期列,数据类型为varchr2。因此,当我试图给出条件>=24/09/2018 00:00:00时,结果将显示所有条目。修复该表。这一设计被打破了。将日期值存储为字符串(varchar)类型从来都不是一个好主意。您是否可以指出您的数据库-sql server、mysql等是否曾经将日期或时间戳值存储在
varchar
列中。正如Joel提到的,您应该修复损坏的数据库设计。