Применение системной даты в oracle - PullRequest
1 голос
/ 03 февраля 2020

Как я могу применить системную дату в своем запросе?

SELECT L.NEVENTLOGIDN, LPAD (nuserid, 6, '0') nuserid, u.susername, 
       TO_CHAR (TO_DATE ('1970-01-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS') + ( (ndatetime) / (60 * 60 * 24)), 'YYYY-MM-DD HH24:MI:SS') 
       date_time, l.nreaderidn, r.sname, 
       CASE 
          WHEN l.nreaderidn IN (SELECT nreaderidn FROM tb_reader where sdescription = 'LOCKER' and upper(sname) like '%' || upper('OUT') || '%') THEN 'OUT' 
          WHEN l.nreaderidn  IN (SELECT nreaderidn FROM tb_reader where sdescription = 'LOCKER' and upper(sname) like '%' || upper('IN') || '%') THEN 'IN' 
        END logtype 
FROM TB_EVENT_LOG l, TB_READER r, TB_USER u 
WHERE l.nreaderidn IN (SELECT nreaderidn FROM tb_reader where sdescription = 'LOCKER') 
  AND NDATETIME >= ((TO_DATE ('2020-01-27' || ' 12:00:00 AM', 'YYYY-MM-DD HH:MI:SS AM') ) - TO_DATE ('1970-01-01 12:00:00 AM', 'YYYY-MM-DD HH:MI:SS AM')) * 24 * 60 * 60 
  AND ndatetime <= ((TO_DATE ('2020-01-28' || ' 12:00:00 AM', 'YYYY-MM-DD HH:MI:SS PM') ) - TO_DATE ('1970-01-01 12:00:00 AM', 'YYYY-MM-DD HH:MI:SS AM')) * 24 * 60 * 60 
  AND l.nuserid = u.suserid 
  AND l.nreaderidn = r.nreaderidn                           
ORDER BY 2, 4

В этой части я хочу добавить системную дату

>= ((TO_DATE ('2020-01-27' || ' 12:00:00 AM', 'YYYY-MM-DD HH:MI:SS AM') )

Основываясь на том, что я ищу sysdate, который должен использовать в этом, но я борюсь с форматом.

Я пытался использовать это, но все еще не повезло.

SELECT L.NEVENTLOGIDN, LPAD (nuserid, 6, '0') nuserid, u.susername, 
       TO_CHAR (TO_DATE ('1970-01-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS') + ( (ndatetime) / (60 * 60 * 24)), 'YYYY-MM-DD HH24:MI:SS') 
       date_time, l.nreaderidn, r.sname, 
       CASE 
         WHEN l.nreaderidn IN (SELECT nreaderidn FROM tb_reader where sdescription = 'LOCKER' and upper(sname) like '%' || upper('OUT') || '%') THEN 'OUT' 
         WHEN l.nreaderidn  IN (SELECT nreaderidn FROM tb_reader where sdescription = 'LOCKER' and upper(sname) like '%' || upper('IN') || '%') THEN 'IN' 
       END logtype 
FROM TB_EVENT_LOG l, TB_READER r, TB_USER u 
WHERE l.nreaderidn IN (SELECT nreaderidn FROM tb_reader where sdescription = 'LOCKER') 
  AND NDATETIME >= ((TO_DATE (sysdate || ' 12:00:00 AM', 'YYYY-MM-DD HH:MI:SS AM') ) - TO_DATE ('1970-01-01 12:00:00 AM', 'YYYY-MM-DD HH:MI:SS AM')) * 24 * 60 * 60 
  AND ndatetime <= ((TO_DATE (sysdate || ' 12:00:00 AM', 'YYYY-MM-DD HH:MI:SS PM') ) - TO_DATE ('1970-01-01 12:00:00 AM', 'YYYY-MM-DD HH:MI:SS AM')) * 24 * 60 * 60 
  AND l.nuserid = u.suserid 
  AND l.nreaderidn = r.nreaderidn                           
ORDER BY 2, 4

Ответы [ 2 ]

1 голос
/ 03 февраля 2020

SYSDATE - это функция, которая возвращает DATE тип данных, поэтому вы не TO_DATE его. Просто используйте его как

where ndatetime < sysdate

(при условии, что столбец ndatetime также DATE).

0 голосов
/ 04 февраля 2020

Решите, используя trun c funtion и sysdate

Мой последний запрос:

SELECT L.NEVENTLOGIDN, LPAD (nuserid, 6, '0') nuserid, u.susername, 
    TO_CHAR (TO_DATE ('1970-01-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS') + ( (ndatetime) / (60 * 60 * 24)), 'YYYY-MM-DD HH24:MI:SS') 
    date_time, l.nreaderidn, r.sname, 
    CASE WHEN l.nreaderidn IN (SELECT nreaderidn FROM tb_reader where sdescription = cur_rec.SDESCRIPTION and upper(sname) like '%' || upper('OUT') || '%') THEN 'OUT' 
    WHEN l.nreaderidn  IN (SELECT nreaderidn FROM tb_reader where sdescription = cur_rec.SDESCRIPTION and upper(sname) like '%' || upper('IN') || '%') THEN 'IN' END logtype 
   FROM TB_EVENT_LOG l, TB_READER r, TB_USER u 
   WHERE 
   l.nreaderidn IN (SELECT nreaderidn FROM tb_reader where sdescription = cur_rec.SDESCRIPTION) 
   AND NDATETIME >= (trunc(sysdate -1) - TO_DATE ('1970-01-01 12:00:00 AM', 'YYYY-MM-DD HH:MI:SS AM')) * 24 * 60 * 60 
   AND ndatetime <= (trunc(sysdate) - TO_DATE ('1970-01-01 12:00:00 AM', 'YYYY-MM-DD HH:MI:SS AM')) * 24 * 60 * 60 
   AND l.nuserid = u.suserid 
   AND l.nreaderidn = r.nreaderidn                           
   ORDER BY 2, 4;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...