gpt4 book ai didi

sql - 如何从带有时间戳 (6) 的 Oracle 表中进行选择?

转载 作者:行者123 更新时间:2023-12-02 03:01:09 25 4
gpt4 key购买 nike

在 SAS 中,我创建了一个数据集 (dt),其日期使用带 6 位小数的秒数:

data dt;
dt_21_aug_2017_23_59_59_999999 = '21aug2017:23:59:59.999999'dt;
dt_01_jan_1960_23_59_59_999999 = '01jan1960:23:59:59.999999'dt;
run;

然后我“格式化”数据集:

data dt_formatted;
set dt;

format dt_21_aug_2017_23_59_59_999999 datetime32.6;
format dt_01_jan_1960_23_59_59_999999 datetime32.6;
run;

我可以看到保留了 6 个小数位。

我使用 dt_formatted 创建一个 Oracle 表:

libname tq84_ora  oracle 
user = &ora_user
password = &ora_password
path = &ora_server
;

proc sql;
create table tq84_ora.dt_formatted as
select * from work .dt_formatted;
quit;

根据需要创建的表有两个 timestamp(6) 列。

如果我使用通过以where条件查询表,则返回插入的记录:

proc sql;
connect to oracle (
user = &ora_user
pw = &ora_password
path = &ora_server
);

select * from connection to oracle (
select *
from dt_formatted
where dt_21_aug_2017_23_59_59_999999 = TO_TIMESTAMP(
'21AUG2017:23:59:59.999999',
'DDMONYYYY:HH24:MI:SS.FF',
'NLS_DATE_LANGUAGE=American'
)
);

disconnect from oracle;
quit;

但是,如果我使用传统方式选择记录,则没有返回记录:

proc sql;
select * from tq84_ora.some_dates_date_format
where dt_21_aug_2017_23_59_59_999999 = '21aug2017:23:59:59.999999'dt;
quit;

但是,如果我选择 dt_01_jan_1960_23_59_59_999999,则会返回记录:

proc sql;
select * from tq84_ora.some_dates_date_format
where dt_01_jan_1960_23_59_59_999999 = '01jan1960:23:59:59.999999'dt;
quit;

原因似乎是 float 的限制。尽管如此,这还是很奇怪,因为 Oracle 清楚地存储了 2017 年的 6 位数字(即 9)。

那么,如何使用传统的proc sql方法来选取2017年的记录呢?

最佳答案

可以使用 LIKE 并将日期作为字符串。

data test;
format new_date $50.;
set work.entity;

new_date=datefrom;
run;

proc sql outobs=1;
select * from work.test where new_date like '%189%';
run;

datefrom 是日期格式。new_date 作为字符串 react 。

在您的情况下,您可以在 where 子句中使用 select 语句:

    proc sql;
select * from work.dt_formatted where dt_21_aug_2017_23_59_59_999999 like '%jan2017:%'
OR dt_21_aug_2017_23_59_59_999999 like '%feb2017:%'
...
;

run;

关于sql - 如何从带有时间戳 (6) 的 Oracle 表中进行选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46111783/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com