Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在oracle中将日期和日期存储在同一列中_Sql_Oracle11g - Fatal编程技术网

Sql 在oracle中将日期和日期存储在同一列中

Sql 在oracle中将日期和日期存储在同一列中,sql,oracle11g,Sql,Oracle11g,我的情况是,我需要在Oracle中的单个列中存储日期和日期(仅一个日期),如下所示: Column name Monday Tuesday

我的情况是,我需要在Oracle中的单个列中存储日期和日期(仅一个日期),如下所示:

Column name                                                                                    
Monday                                                                                                
Tuesday                                                   
25
10
但我不喜欢将字符串和数字组合在一列中。因此,我想要任何公式或设计,其中每个值都具有唯一标识符并存储如下:

Column name                  
1 - - - - - refers to Monday              
2............refers Tuesday              
3-----------refers to a actual date 1
以上是一个虚构的价值观,仅供理解。 我需要的是,如果必须获得所有具有值的条目,我应该应用一些公式并获得一个我应该在select查询中使用的数字

同样,如果要选择日期为25的条目,则必须应用相同的公式,获取表示日期25的唯一数字,并在查询中使用它

您可以在oracle中使用to_char()函数:

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

它将返回星期几。

只在列中存储日期,星期几由此派生

因此:

P>试着做更多的事情,从长远来看,你可能只会伤害自己(考虑到如果某物被更新的话,你将如何维护事物……考虑如果某人偶然地更新了1的值,而不更新匹配的值会发生什么?……因为他们不理解它……)
如果我得到1作为星期一的一天,那么1代表星期一,那么实际日期1如何存储呢?大家都很困惑,我又补充了一点,我不能将此列作为日期类型或日期戳。。。。这是一个数字类型。。。。所以我想把日期存储为数字,一周中的某一天也存储为某个数字。为什么3不表示星期三呢?你看到的例子只是一个虚构的东西,我可以将3表示为星期三。。。。4至星期四。。。。。。5至周五6至周六7至周日。。。。。但是,如果我得到实际日期1,2,3,4,5,6,7,那么我应该存储什么呢?因为这些都映射到了天。如果存储这些值,看起来这些条目有一周中的几天,但这不应该发生……您不能将这些信息存储在单个列中。你需要两列。或者使用一个定义为
date
的列,即使找到这样的公式,这也违反了良好数据库设计的基本原则。只需添加第二列并完成它。从长远来看,这将更加灵活和高效。我不能像我提到的那样将此列设为日期类型。。。。。我应该只储存一个号码。。。我不需要一个月的时间。。。。一周中的日期和日期都应该是唯一的。。。。我正在寻找某种公式,它会给我星期一的唯一值和星期一的唯一值date@premkumar:一个“日期”已经标识了一周中的某一天。为什么要冗余地存储它?它不是冗余的。有些条目将日期作为值,有些条目将星期几作为我从源代码中获取的值。。。。但我不想把字符串和数字结合起来。。。。我只想将所有日期映射到一些唯一的数字,并将一周中的所有日期映射到唯一的数字number@premkumar我们再次告诉你不要那样做。存储日期。。所有这些信息(还有更多)就在你的指尖。。。以任何其他方式存储它是不明智或不可维护的。。。很抱歉shrug@premkumar没有抓住要点。。如果它没有被大量使用,为什么不“正确地”简单地构建它呢?为什么要用不需要的过于复杂的设计来过度设计呢?
  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.
  -- 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.