加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Oracle:SQL选择带时间戳的日期

发布时间:2020-12-12 13:13:32 所属栏目:百科 来源:网络整理
导读:我有以下数据: SQL select * from booking_session;BK_ID|BK_DATE-----|------------------------- 1|18-MAR-12 10.00.00.000000 2|18-MAR-12 10.25.00.000000 3|18-MAR-12 10.30.00.000000 4|18-MAR-12 10.35.00.000000 5|18-MAR-12 10.40.00.000000 我正
我有以下数据:

SQL> select * from booking_session;

BK_ID|BK_DATE
-----|-------------------------
    1|18-MAR-12 10.00.00.000000
    2|18-MAR-12 10.25.00.000000
    3|18-MAR-12 10.30.00.000000
    4|18-MAR-12 10.35.00.000000
    5|18-MAR-12 10.40.00.000000

我正在尝试编写一个sql查询,选择所有匹配特定日期的记录,但是我使用时间戳作为BK_DATE字段,无论我尝试什么,我的查询都不会产生任何结果.

SQL:我尝试了以下查询,但它们没有产生任何结果

1.

select * 
from booking_session
where bk_date = to_date('18-03-2012','dd-mm-yyyy');

2.

select * 
from booking_session
where bk_date = to_timestamp('18-03-2012','dd-mm-yyyy');

3.

select * 
from booking_session
where bk_date = to_date('18-MAR-2012','dd-mm-yyyy');

它只适用于我设置整个日期值的情况;

select * 
from booking_session
WHERE bk_date = '18-MAR-12 11.00.00.000000';


CREATE TABLE BOOKING_SESSION(
  BK_ID NUMBER NOT NULL,BK_DATE TIMESTAMP,BK_BOOKER NUMBER,BK_CUSTOMER NUMBER,BK_TREATMENT NUMBER,T_SESSION_DATETIME TIMESTAMP,STAFFAPPOINTED NUMBER,BK_ROOM NUMBER
);

INSERT INTO BOOKING_SESSION VALUES (
  1,TO_TIMESTAMP('18/03/2012 10:00','DD/MM/YYYY HH24:MI'),1,TO_TIMESTAMP('20/03/2012 11:00',2,1
);

解决方法

您可以通过执行范围来指定整天,如下所示:

WHERE bk_date >= TO_DATE('2012-03-18','YYYY-MM-DD')
AND bk_date <  TO_DATE('2012-03-19','YYYY-MM-DD')

更简单的是你可以使用TRUNC:

WHERE TRUNC(bk_date) = TO_DATE('2012-03-18','YYYY-MM-DD')

不带参数的TRUNC会从DATE中删除小时,分钟和秒.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读