【问题标题】:Data type Varchar2 to date format数据类型 Varchar2 转日期格式
【发布时间】:2019-06-03 02:30:08
【问题描述】:

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

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

【问题讨论】:

  • 嗨,Lurker,感谢您的回复。
  • 我的数据包含有效开始日期列,日期格式为 dd/mm/yyyy 00:00:00,数据类型为 varchr2。因此,当我尝试给出条件 >=24/09/2018 00:00:00 时,结果会带出所有条目。
  • 修复表格。这个设计被打破了。 从不将日期值存储为字符串 (varchar) 类型是一个好主意。
  • 你能指出你的数据库 - sql server, mysql etc
  • 从不将日期或时间戳值存储在 varchar 列中。正如 Joel 所提到的,您宁愿修复损坏的数据库设计。

标签: oracle varchar2


【解决方案1】:

你可以试试这个:

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')

将日期时间存储为 varchar 是非常错误的。

【讨论】:

    【解决方案2】:

    试试这个:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-22
      • 2016-10-13
      • 2015-10-19
      • 2017-07-15
      • 2021-04-10
      • 2023-04-10
      • 2016-03-10
      • 2016-11-11
      相关资源
      最近更新 更多