我正在向表中插入数据,遇到了一个问题。我需要的日期是:"sep - 29- 2000",但我得到的是"sep - 29- 2000"。任何帮助将非常感激!
INSERT INTO movies (title_id, title, description, rating, category, release_date)
VALUES
(title_id_seq.NEXTVAL, 'Being the Ricardos', 'Follows Lucy and Desi as they face a crisis that could end their careers and another that could end their marriage.', 'R', 'DRAMA', (TO_DATE('December 2, 2021', 'Mon DD, YYYY')));
方法错误。
日期不是用"大写"存储的。也不是"lowercase";Oracle在其内部格式中使用7字节来存储这些信息。您需要做的就是插入一个有效的DATE
数据类型值:
SQL> CREATE TABLE movies
2 (
3 title_id NUMBER,
4 title VARCHAR2 (30),
5 description VARCHAR2 (200),
6 rating VARCHAR2 (5),
7 category VARCHAR2 (20),
8 release_date DATE
9 );
Table created.
SQL> CREATE SEQUENCE title_id_seq;
Sequence created.
插入:注意release_date
值-我使用的日期文字总是看起来像这样:date
关键字后面跟着用单引号括起来的yyyy-mm-dd
格式的值。
SQL> INSERT INTO movies (title_id,
2 title,
3 description,
4 rating,
5 category,
6 release_date)
7 VALUES (title_id_seq.NEXTVAL,
8 'Being the Ricardos',
9 'Follows Lucy and Desi ...',
10 'R',
11 'DRAMA',
12 DATE '2021-12-02');
1 row created.
日期也可以是to_date
函数,带有适当的格式掩码,例如
SQL> update movies set release_date = to_date('02.12.2021', 'dd.mm.yyyy');
1 row updated.
SQL> update movies set release_date = to_date('2021, Dec 02', 'yyyy, Mon dd', 'nls_date_language=english');
1 row updated.
所有这些值表示相同的日期:2021年12月2日。
这是由你以任何你想要的方式呈现这个值。如何?使用TO_CHAR
函数与所需的格式模型。
SQL> select release_date from movies;
RELEASE_
--------
02.12.21
你想要的方式:
SQL> select to_char(release_date, 'MON dd, yyyy') release_date from movies;
RELEASE_DATE
------------
DEC 02, 2021
您在评论中发布的错误(ORA-01722:无效号码)与日期无关;它与有关,与不同。说不出是什么;当您尝试将字符插入NUMBER
数据类型列时,会引发该问题。您确定在INSERT
语句中匹配了列名和适当的数据类型吗?因为,和都可以正常工作示例表。