2013-07-18 2 views
0

Привет, я новичок в Oracle и забыл, как ввести дату. Я пробовал много вариантов и, похоже, не могу их получить, плюс я посмотрел в Интернете, но не могу найти правильный пример. Моя таблица настроена следующим образом: hiredate DATE, (DATE - я предполагаю ввод по умолчанию, но по умолчанию).Как вставить дату?

Спасибо за любую помощь.

Вот мой код:

SQL> SET LINESIZE 120 
SQL> SET PAGESIZE 45 
SQL> SET FEEDBACK 1 
SQL> SET ECHO ON 
SQL> 
SQL> DROP TABLE employee 
    2 
SQL> CREAT TABLE student 
SP2-0734: unknown command beginning "CREAT TABL..." - rest of line ignored. 
SQL> CREATE TABLE employee 
    2 (
    3 empno NUMBER(4)CONSTRAINT employee_empno_PK PRIMARY KEY, 
    4 empname VARCHAR(10), 
    5 job  VARCHAR(10), 
    6 manager NUMBER(4), 
    7 hiredate DATE, 
    8 salary NUMBER(7,2), 
    9 commission NUMBER(7,2), 
10 deptno NUMBER(2) 
11 ); 

Table created. 

SQL> INSERT INTO employee 
    2 VALUES(7839, 'President', NULL, 11/17/1981, 5000, NULL, 10); 
INSERT INTO employee 
      * 
ERROR at line 1: 
ORA-00947: not enough values 


SQL> VALUES(7839, 'President', NULL, '11/17/1978', 5000, NULL, 10); 
SP2-0734: unknown command beginning "VALUES(783..." - rest of line ignored. 
SQL> INSERT INTO employee 
    2 VALUES(7839, 'President', NULL, '11/17/1978', 5000, NULL, 10); 
INSERT INTO employee 
      * 
ERROR at line 1: 
ORA-00947: not enough values 


SQL> INSERT INTO employee 
    2 VALUES(7839, 'King', 'President', NULL, 11/17/1981, 5000, NULL, 10); 
VALUES(7839, 'King', 'President', NULL, 11/17/1981, 5000, NULL, 10) 
               * 
ERROR at line 2: 
ORA-00932: inconsistent datatypes: expected DATE got NUMBER 


SQL> INSERT INTO employee 
    2 VALUES(7839, 'King', 'President', NULL, 19811117, 5000, NULL, 10); 
VALUES(7839, 'King', 'President', NULL, 19811117, 5000, NULL, 10) 
             * 
ERROR at line 2: 
ORA-00932: inconsistent datatypes: expected DATE got NUMBER 


SQL> INSERT INTO employee 
    2 VALUES(7839, 'King', 'President', NULL, '11/17/1981', 5000, NULL, 10); 
VALUES(7839, 'King', 'President', NULL, '11/17/1981', 5000, NULL, 10) 
             * 
ERROR at line 2: 
ORA-01843: not a valid month 


SQL> INSERT INTO employee 
    2 VALUES(7839, 'King', 'President', NULL, '1978/11/17 
    3 ) 
    4 ; 
ERROR: 
ORA-01756: quoted string not properly terminated 


SQL> INSERT INTO employee 
    2 VALUES(7839, 'King', 'President' NULL, '1978/11/17', 5000, NULL, 10); 
VALUES(7839, 'King', 'President' NULL, '1978/11/17', 5000, NULL, 10) 
            * 
ERROR at line 2: 
ORA-00917: missing comma 

Hello, I am new to MySQL and forgot how to properly INSERT at DATE when using MySQL Plus. I have tried many different variations as you will be able to see and I can't seem to figure it out. I also looked on the internet but always find examples where they make there own formats. What is the correct way to insert a date when the table was created using: hiredate 


SQL> INSERT INTO employee 
    2 VALUES(7839, 'King', 'President', NULL, '1981/11/17', 5000, NULL, 10); 
VALUES(7839, 'King', 'President', NULL, '1981/11/17', 5000, NULL, 10) 
             * 
ERROR at line 2: 
ORA-01861: literal does not match format string 


SQL> INSERT INTO employee 
    2 VALUES(7839, 'King', 'President', NULL, '1981/17/11', 5000, NULL, 10); 
VALUES(7839, 'King', 'President', NULL, '1981/17/11', 5000, NULL, 10) 
             * 
ERROR at line 2: 
ORA-01861: literal does not match format string 


SQL> INSERT INTO employee 
    2 VALUES(7839, 'King', 'President', NULL, '17/11/1981', 5000, NULL, 10); 
VALUES(7839, 'King', 'President', NULL, '17/11/1981', 5000, NULL, 10) 
             * 
ERROR at line 2: 
ORA-01843: not a valid month 


SQL> INSERT INTO employee 
    2 VALUES(7839, 'King', 'President', NULL, '81/11/17', 5000, NULL, 10); 
VALUES(7839, 'King', 'President', NULL, '81/11/17', 5000, NULL, 10) 
             * 
ERROR at line 2: 
ORA-01847: day of month must be between 1 and last day of month 


SQL> INSERT INTO employee 
    2 VALUES(7839, 'King', 'President', NULL, '17/11/81', 5000, NULL, 100); 
VALUES(7839, 'King', 'President', NULL, '17/11/81', 5000, NULL, 100) 
             * 
ERROR at line 2: 
ORA-01843: not a valid month 


SQL> INSERT INTO employee 
    2 VALUES(7839, 'King, 'President', NULL, '11/17/1981', 5000, NULL, 10); 
ERROR: 
ORA-01756: quoted string not properly terminated 


SQL> INSERT INTO employee 
    2 VALUES(7839, 'King', 'President', NULL, '11/17/81', 5000, NULL, 10); 
VALUES(7839, 'King', 'President', NULL, '11/17/81', 5000, NULL, 10) 
             * 
ERROR at line 2: 
ORA-01843: not a valid month 


SQL> INSERT INTO employee 
    2 VALUES(7839, 'King', 'President', NULL, '17/11/81', 5000, NULL, 10); 
VALUES(7839, 'King', 'President', NULL, '17/11/81', 5000, NULL, 10) 
             * 
ERROR at line 2: 
ORA-01843: not a valid month 


SQL> INSERT INTO employee 
    2 VALUES(7839, 'King', 'President', NULL, '81/17/11', 5000, NULL, 10); 
VALUES(7839, 'King', 'President', NULL, '81/17/11', 5000, NULL, 10) 
             * 
ERROR at line 2: 
ORA-01847: day of month must be between 1 and last day of month 


SQL> INSERT INTO employee 
    2 VALUES(7839, 'King', 'President', NULL, '17/81/11', 5000, NULL, 10); 
VALUES(7839, 'King', 'President', NULL, '17/81/11', 5000, NULL, 10) 
             * 
ERROR at line 2: 
ORA-01843: not a valid month 


SQL> INSERT INTO employee 
    2 VALUES(7839, 'King', 'President', NULL, '81/11/17', 5000, NULL, 10); 
VALUES(7839, 'King', 'President', NULL, '81/11/17', 5000, NULL, 10) 
             * 
ERROR at line 2: 
ORA-01847: day of month must be between 1 and last day of month 


SQL> INSERT INTO employee 
    2 VALUES(7839, 'King', 'President', NULL, '1981-11-17', 5000, NULL, 10); 
VALUES(7839, 'King', 'President', NULL, '1981-11-17', 5000, NULL, 10) 
             * 
ERROR at line 2: 
ORA-01861: literal does not match format string 


SQL> INSERT INTO employee 
    2 VALUES(7839, 'King', 'President', NULL, '17/11/1981', 5000, NULL, 10); 
VALUES(7839, 'King', 'President', NULL, '17/11/1981', 5000, NULL, 10) 
             * 
ERROR at line 2: 
ORA-01843: not a valid month 
+2

Какой из них вы используете Oracle или Mysql? Сохраните только соответствующий тег. – Noel

+0

@ Ramblin'Man: Согласен, но, судя по ошибкам «ORA- *», он выглядит как Oracle. –

+0

Oracle SQL Plus – NewtonEntropy

ответ

1

Вы можете использовать TO_DATE функцию:

TO_DATE('11/17/1981', 'MM/DD/YYYY') 

Это позволяет указать дату в виде строки, а затем формат, что его в так Oracle может преобразовать его в Дату.

Или вы можете использовать дату буквального:

date '1981-11-17'

+0

Или даже лучше, используйте литералы даты, такие как 'date '1981-11-17''. [ISO 8601 FTW] (http://xkcd.com/1179/). –

+0

@jonearles: Thx для справки xkcd :-). Если использовать литерал даты, Oracle действительно ожидает что-то типа '' 17 -NOV-2013'' (по крайней мере, по умолчанию). –

+1

Это типичный по умолчанию для строк, которые вы конвертируете в даты, но это не литерал даты. Литерал даты выглядит примерно так: 'select date '1981-11-17' from dual;'. –

0

Даты в формате чувствительны в SQL. Поэтому вам нужно заключить их в одинарные кавычки, например ('21 -Dec-2010 '). Если ваша дата не подходит в стандартном формате, вам необходимо преобразовать с помощью функции Single Row Conversion TO_DATE с использованием конкретной модели формата. Синтаксис можно найти на моем портале здесь http://www.suhelsayyad.com/p/blog-page_14.html

Смежные вопросы