如何在将数据插入 SQL 表时使日期的月份大写



我正在向表中插入数据,遇到了一个问题。我需要的日期是:"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函数与所需的格式模型。

默认情况下,在my数据库(这意味着您的数据库可能以不同的方式显示它),它看起来像这样:
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语句中匹配了列名和适当的数据类型吗?因为,都可以正常工作示例表。

最新更新