Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.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_Oracle - Fatal编程技术网

Sql 在oracle中存储日期

Sql 在oracle中存储日期,sql,oracle,Sql,Oracle,我有一张桌子 create table Dummy (date_created date) 在oracle中。我想以“dd-mon-yyyy”(2010年12月12日)格式存储日期。 我该怎么做呢。 请帮忙。你可以在这里留心 使用to_date函数以所需格式保存数据。我建议使用SYSDATE更新表,当您需要从表中读取数据时,请使用类似以下内容: dbms_output.put_line(TO_CHAR(SYSDATE, 'DD-MON-YYYY HH24:MI:SS')); 要解决您的问题

我有一张桌子

create table Dummy (date_created date)
在oracle中。我想以“dd-mon-yyyy”(2010年12月12日)格式存储日期。 我该怎么做呢。
请帮忙。

你可以在这里留心

使用to_date函数以所需格式保存数据。我建议使用SYSDATE更新表,当您需要从表中读取数据时,请使用类似以下内容:

dbms_output.put_line(TO_CHAR(SYSDATE, 'DD-MON-YYYY HH24:MI:SS'));
要解决您的问题,请使用:

截止日期('08/JAN/2010','DD/MON/YYYY')

只要使用TRUNC(YourDate),如果日期有时间部分,它将是截断时间部分。Oracle不仅仅有“日期”类型,“日期”总是有时间部分

但是,如果不指定时间,则时间将为00:00:00

SELECT TRUNC(SYSDATE) from dual
结果:

23-12-2010
使用
到日期()
函数。在您的例子中,语法是

插入虚拟值(截止日期('08-09-2010','dd-mm-yyyy')


在Oracle中,使用日期数据类型创建的列只存储日期。它没有特定的格式,只存储日、月、年、小时、分钟和秒。您需要使用to_DATE函数从任何格式转换。如果您有一个日期为'dd-mon-yyyy'格式的文本字符串,并且希望将此日期放入表中,则可以使用

INSERT INTO DUMMY (DATE_CREATED)
  VALUES (TO_DATE('01-FEB-2011', 'DD-MON-YYYY');
SELECT TO_CHAR(DATE_CREATED, 'DD-MON-YYYY')
  FROM DUMMY;
另一种方法(从日期列值到字符串)是使用to_CHAR函数。如果要从表中检索值并希望将其转换为“DD-MON-YYYY”格式,则可以使用以下命令

INSERT INTO DUMMY (DATE_CREATED)
  VALUES (TO_DATE('01-FEB-2011', 'DD-MON-YYYY');
SELECT TO_CHAR(DATE_CREATED, 'DD-MON-YYYY')
  FROM DUMMY;

共享和享受。

Oracle不支持没有时间部分的日期

通过添加
检查
约束,可以使其始终为整数日期:

CREATE TABLE dummy (date_created date CHECK (date_created = TRUNC(date_created)))
,以所需的任何格式插入:

INSERT
INTO    dummy (date_created)
VALUES  (TO_DATE('23-DEC-2010', 'dd-mon-yyyy'))
SELECT  TO_CHAR(date_created, 'dd-mon-yyyy')
FROM    dummy
并选择所需的任何格式:

INSERT
INTO    dummy (date_created)
VALUES  (TO_DATE('23-DEC-2010', 'dd-mon-yyyy'))
SELECT  TO_CHAR(date_created, 'dd-mon-yyyy')
FROM    dummy

DATE
数据类型将以内部格式在数据库中存储日期和时间信息(世纪、年、月、日、小时、分钟和秒)。当您从数据库中取出它时,您可以选择以您喜欢的任何格式显示它

使用或显式使用或创建此信息。如果查看v$nls_参数视图,这将告诉您通常用于隐式转换的
nls_日期_格式是什么。这通常被定义为
DD-MON-RR
,这可能是运行查询
select sysdate from dual
时日期显示为
23-DEC-10
的原因。(不完全确定我对nls的看法是否正确。如果我错了,请纠正我。)

但是,如果您知道如何获取日期信息,则可以获取所有日期信息。来自dual的查询
选择to_char(sysdate,'dd mon yyyy hh24:mi:ss')将返回所有日期字段

同样,下面显示的insert语句将创建一行,其中包含日期值

insert into dummy (date_created) 
values (to_date('12-dec-2010 12:34:56', 'dd-mon-yyyy hh24:mi:ss'))`
然后可以检索这些数据

select date_created from dummy
这将使用
NLS\u date\u格式
将日期隐式转换为字符串,提供以下输出

DATE_CREA
---------
23-DEC-10
通过将日期显式转换为字符串,可以获得完整的日期信息

select to_char(date_created, 'DD-MON-YYYY') as date_created from dummy;

select to_char(date_created, 'DD-MON-YYYY HH24:MI:SS') as date_created 
from dummy;
这将以您需要的格式提供输出:

DATE_CREATE
-----------
23-DEC-2010

如果您总是使用
TO_DATE
TO_CHAR
函数来转换为日期数据类型或从日期数据类型转换为日期数据类型,那么问题就会少一些。隐式转换很有用,但可能会导致一些混乱或问题。

为什么要存储格式化的日期?