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