我有一个staff_registered列,其中包括员工注册的日期和时间。但是,我希望能够检索所有在2007年1月22日注册的员工的日期和时间,如何显示时间?
SELECT EMPLOYEE_ID, FIRST_NAME, LAST_NAME, TO_CHAR (SYSDATE,'DD MON YY
HH:MI:SS')
FROM EMPLOYEE
WHERE TO_CHAR (REGISTRATION_DATE, 'DD-MON-YY') = '22-JAN-07';
我已将此作为起点,我知道这是错误的,因为它不是今天的日期(即07年1月22日)或时间,而是我不知道如何纠正它。
答案 0 :(得分:1)
在这种过滤条件下,不经TRUNC
转换就使用TO_CHAR
:
WHERE TRUNC(REGISTRATION_DATE) = date'2018-09-05'
因为REGISTRATION_DATE
已经是DATE
类型的字段,不是吗?
答案 1 :(得分:0)
我相信您只是在打错字/脑子放屁。您正在选择语句中选择今天的(SYSDATE)日期。您想选择REGISTRATION_DATE。搜索的内容无关紧要,因为当前它将始终返回当前日期,直到将其更改为以下日期为止。
SELECT EMPLOYEE_ID, FIRST_NAME, LAST_NAME, TO_CHAR (REGISTRATION_DATE,'DD MON YY HH:MI:SS')
FROM EMPLOYEE
WHERE TO_CHAR (REGISTRATION_DATE, 'DD-MON-YY') = '22-JAN-07';
除非我误解了您的问题...
答案 2 :(得分:0)
如果我理解正确,您有一列的字符串包含您要查找的'05 -SEP-2018'
如果是的话,我会建议类似的东西
SELECT EMPLOYEE_ID, FIRST_NAME, LAST_NAME, TO_CHAR (SYSDATE,'DD MON YY HH:MI:SS')
FROM STUDENT
WHERE CONTAINS(TO_CHAR(REGISTRATION_DATE, '05-SEP-2018'))
让我知道是否有帮助