在oracle中将VARCHAR2数据转换为日期
convert VARCHAR2 data to date in oracle
我在 TIMESTAMP
列中有以下数据
TIMESTAMP - VARCHAR2
Format - YYYY-MM-DD hh24:mi:ss.0
2018-01-31 23:47:35.0
2018-01-01 00:00:48.0
2018-01-01 06:54:36.0
我正在尝试查询以获取两个日期之间的数据 (example 4th Jan to 18th Jan)
,但我不确定如何将其转换为 DATE
格式。以前我每天都获取数据并在我的 sql 查询中使用 WHERE TIMESTAMP LIKE '2018-01-04%'
。
如果有人能提供帮助,我将不胜感激
一种方法使用 to_date()
:
where to_date(timestamp, 'YYYY-MM-DD HH24:MI:SS.F') >= date '2018-01-04' and
to_date(timestamp, 'YYYY-MM-DD HH24:MI:SS.F') < date '2018-01-09'
但是,您使用的是良好的日期格式,因此您可以使用字符串比较:
where timestamp >= '2018-01-04' and
timestamp < '2018-01-09'
虽然这很方便,但您应该将值存储为日期或时间戳。将 date/time 值存储为字符串通常是错误的(尽管您的格式使这更合理)。
我在 TIMESTAMP
列中有以下数据
TIMESTAMP - VARCHAR2
Format - YYYY-MM-DD hh24:mi:ss.0
2018-01-31 23:47:35.0
2018-01-01 00:00:48.0
2018-01-01 06:54:36.0
我正在尝试查询以获取两个日期之间的数据 (example 4th Jan to 18th Jan)
,但我不确定如何将其转换为 DATE
格式。以前我每天都获取数据并在我的 sql 查询中使用 WHERE TIMESTAMP LIKE '2018-01-04%'
。
如果有人能提供帮助,我将不胜感激
一种方法使用 to_date()
:
where to_date(timestamp, 'YYYY-MM-DD HH24:MI:SS.F') >= date '2018-01-04' and
to_date(timestamp, 'YYYY-MM-DD HH24:MI:SS.F') < date '2018-01-09'
但是,您使用的是良好的日期格式,因此您可以使用字符串比较:
where timestamp >= '2018-01-04' and
timestamp < '2018-01-09'
虽然这很方便,但您应该将值存储为日期或时间戳。将 date/time 值存储为字符串通常是错误的(尽管您的格式使这更合理)。