Oracle: SQL 选择日期和时间戳

标签: sql Oracle
发布时间: 2017/4/15 18:54:23
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有以下数据︰

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,
  1,
  1,
  TO_TIMESTAMP('20/03/2012 11:00', 'DD/MM/YYYY HH24:MI'),2,1
);

解决方法 1:

答案由尼古拉斯 · 克拉斯诺夫

SELECT *
FROM BOOKING_SESSION
WHERE TO_CHAR(T_SESSION_DATETIME, 'DD-MM-YYYY') ='20-03-2012';
赞助商