如何从SQL中的datetime列显示日期和时间

时间:2018-11-21 19:44:35

标签: sql oracle date datetime time

我有一个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日)或时间,而是我不知道如何纠正它。

3 个答案:

答案 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'))

让我知道是否有帮助