我有一张桌子
create table Dummy (date_created date)
在oracle中。我希望以'dd-mon-yyyy'(12-dec-2010)格式存储日期。 我该怎么做 请帮忙。
答案 0 :(得分:9)
在Oracle中,使用DATE数据类型创建的列只存储日期。它没有特定的格式,只存储日,月,年,小时,分钟和秒。您需要使用TO_DATE函数从您拥有的任何格式进行转换。如果您的文字字符串的日期格式为“dd-mon-yyyy”,并且您希望将此日期放入表中,则可以使用类似
的内容INSERT INTO DUMMY (DATE_CREATED)
VALUES (TO_DATE('01-FEB-2011', 'DD-MON-YYYY');
走另一条路(从DATE列值到字符串),您将使用TO_CHAR函数。如果您从表中检索某个值并想将其转换为“DD-MON-YYYY”格式,则可以使用类似
的内容SELECT TO_CHAR(DATE_CREATED, 'DD-MON-YYYY')
FROM DUMMY;
分享并享受。
答案 1 :(得分:2)
使用to_date()
功能。在您的情况下,语法将是
insert into Dummy values (to_date('08-09-2010', 'dd-mm-yyyy'));
答案 2 :(得分:1)
DATE
数据类型将以数据库的内部格式存储日期和时间信息(世纪,年,月,日,小时,分钟和秒)。当你从数据库中取出它时,你可以选择以你喜欢的任何格式显示它。
此信息可以使用implicit conversion from a string创建,也可以使用TO_DATE
function或ANSI date literal明确创建。如果您查看v $ nls_parameters视图,这将告诉您NLS_DATE_FORMAT
通常用于隐式转换的内容。这通常可以定义为DD-MON-RR
,这可能就是为什么在运行查询23-DEC-10
时日期将以select sysdate from dual
出现的原因。 (不完全确定我对nls的说法是正确的。如果我错了,请纠正我。)
但是,如果您知道如何获取日期信息,则可以使用所有日期信息。查询select to_char(sysdate, 'dd-mon-yyyy hh24:mi:ss') from dual
将返回所有日期字段。
同样,下面显示的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_DATE_FORMAT
隐式将日期转换为字符串,提供下面的输出。
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
函数转换为日期数据类型,则可以减少问题。隐式转换很有用,但可能会引起一些混乱或问题。
答案 3 :(得分:0)
你可以留意并留意
http://www.techonthenet.com/oracle/functions/to_date.php
使用to_date函数以您需要的格式保存数据。我建议使用SYSDATE更新表,当你需要从表中读取数据时使用类似的东西:
dbms_output.put_line(TO_CHAR(SYSDATE, 'DD-MON-YYYY HH24:MI:SS'));
解决您的问题:
to_date('08 / JAN / 2010','DD / MON / YYYY')
答案 4 :(得分:0)
如果日期有时间部分,只需使用TRUNC(YourDate),它将截断时间部分。甲骨文不仅仅是'DATE'类型,'日期'总是有时间的一部分。
但是如果你没有指定时间 - 它将是00:00:00。
SELECT TRUNC(SYSDATE) from dual
结果:
23-12-2010
答案 5 :(得分:0)
如果没有时间,Oracle不支持DATE
。
您可以通过添加CHECK
约束来使其始终为整数日期:
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