Храните день и дату в одной колонке в Oracle - PullRequest
0 голосов
/ 27 марта 2019

У меня есть ситуация, когда мне нужно хранить день и дату (просто дату) в одном столбце в Oracle, как показано ниже:

Column name                                                                                    
Monday                                                                                                
Tuesday                                                   
25
10

Но мне не нравится объединять строку и число в одном столбце. Поэтому я хочу любую формулу или дизайн, где каждое из этих значений получает уникальный идентификатор и сохраняет, как показано ниже:

Column name                  
1 - - - - - refers to Monday              
2............refers Tuesday              
3-----------refers to a actual date 1

Выше воображаемые ценности только для понимания. Что мне нужно, если мне нужно получить все записи со значением понедельник, я должен применить некоторую формулу и получить число, которое я должен использовать в запросе выбора

Точно так же, если я хочу выбрать записи с датой = 25, тогда я должен применить ту же формулу и получить уникальный номер, представляющий дату 25, и использовать его в своем запросе

Ответы [ 2 ]

1 голос
/ 27 марта 2019

Храните в столбце только ДАТУ, из которой определяется день недели.

так:

  CREATE TABLE junk
  (
  id       number,
  my_date  date 
  );

  insert into junk values ( 123, sysdate );
  insert into junk values ( 234, add_months(sysdate,-123) );
  commit;

  select my_date  "The actual date",
         to_char(my_date,'Day')  "The day of the week",
         to_char(my_date,'Dy') "other way",
         to_char(my_date,'D') "another way"
  from junk;

  The actual date      The day o oth a
  -------------------- --------- --- -
  27-mar-2019 15:28:15 Wednesday Wed 4
  27-dec-2008 15:28:15 Saturday  Sat 7

  2 rows selected.

Пытаясь сделать что-то большее, вы, вероятно, навредите себе только в долгосрочной перспективе (подумайте, как вы будете поддерживать вещи, если что-то будет обновлено ... подумайте, что произойдет, если / когда кто-то "случайно" обновит 1 из значений, без обновления соответствующего? ... потому что они этого не поняли ...)

  -- only pull records on Wednesday
  select *
  from junk
  where to_char(my_date,'D') = 4
  /

          ID MY_DATE
  ---------- --------------------
         123 27-mar-2019 15:28:15

  1 row selected.
0 голосов
/ 27 марта 2019

Вы можете использовать функцию to_char () в oracle:

SELECT TO_CHAR(date '2019-03-27', 'DAY') day FROM dual;

Который вернет день недели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...