I am trying to insert a DATE value into my table however I get the following error:

```
SQL Error: ORA-00984: column not allowed here
00984. 00000 -  "column not allowed here"

```

this is my statement:

```
INSERT INTO TstResults (tstcode, EmpID, fname, sname, tstDate, tstRslt)
VALUES ((Select tstcode from Tests where Freq ='6mnths')
       ,(Select EmpID from Employees where fname = 'Sam')
       ,'Sam'
       ,'Fisher'
       ,01-JUN-15
       ,'A');

```

Whenever I type in a date it gives me that above error. In the TstResults the tstDate column has a default value of sysdate. The only way I can out the data in the table is by removing the tstDate from the insert statement.
['https://Stackoverflow.com/questions/27757203', 'https://Stackoverflow.com', 'https://Stackoverflow.com/users/4413868/']
As explained by *a\_horse\_with\_no\_name* in a comment above, for hard-coded date, you might want to use a [*date literal*](https://docs.oracle.com/cd/E11882_01/server.112/e41084/sql_elements003.htm#SQLRF51062) : `DATE '2015-06-15'`

On the other hand, Oracle can convert from *strings* to date too. Either *implicitly* using the client `NLS_DATE_FORMAT` parameter as demonstrated in the other answers. Or *explicitly* by calling the `TO_DATE` function with the correct parameters. In your particular case: `TO_DATE('01-JUN-15', 'DD-MON-YY', 'NLS_DATE_LANGUAGE = American')`

Using *implicit* conversion might seems *quick-and-easy* but, please note however that *implicit* conversion might work today but fail in the future some clients connecting to the DB with different settings (say for client having a different *locale*).

---

So, as of myself, I would push toward using a date literal:

```
INSERT INTO TstResults (tstcode, EmpID, fname, sname, tstDate, tstRslt)
VALUES ((Select tstcode from Tests where Freq ='6mnths')
       ,(Select EmpID from Employees where fname = 'Sam')
       ,'Sam'
       ,'Fisher'
       , DATE '2015-06-15'
       ,'A')

```

Or, if you really don't want / can't use the date literal:

```
INSERT INTO TstResults (tstcode, EmpID, fname, sname, tstDate, tstRslt)
VALUES ((Select tstcode from Tests where Freq ='6mnths')
       ,(Select EmpID from Employees where fname = 'Sam')
       ,'Sam'
       ,'Fisher'
       ,TO_DATE('01-JUN-15', 'DD-MON-YY', 'NLS_DATE_LANGUAGE = American')
       ,'A')

```
You are missing quotes around the date:

```
INSERT INTO TstResults (tstcode, EmpID, fname, sname, tstDate, tstRslt)
VALUES ((Select tstcode from Tests where Freq ='6mnths')
       ,(Select EmpID from Employees where fname = 'Sam')
       ,'Sam'
       ,'Fisher'
       ,'01-JUN-15'
       ,'A');

```