首页 > 解决方案 > 过滤具有奇怪格式的日期数据集

问题描述

我有一列由以下格式的日期填充...

purch_dt
8/18/2014
9/27/2014
1/3/2015
10/29/2016
11/5/2016
2/9/2017
3/1/2017
6/29/2017
12/27/2017
2/25/2018

我想过滤数据集以仅包含特定范围内的日期,但是当我尝试在 WHERE purch_dt BETWEEN '3/1/2017' AND '6/29/2017' 之间编码时,我收到错误消息“A字符串转换为数值失败。” 知道如何解决这个问题吗?

标签: sqlteradata

解决方案


不是 100% 确定这一点,但至少想提供帮助。我认为,如果您适当地投射该列,它应该可以工作,如下所示:

select *
  from my_table
  where cast(purch_dt as TIMESTAMP(0) format 'd/m/yyyy') 
          between date '2017-03-01' AND date '2017-06-29'

无论如何,我强烈建议将日期存储为DATE而不是VARCHAR. 存储它们VARCHAR只是自找麻烦。


推荐阅读