Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

"date" as a column name

I have a table called calendars.

One of its columns is named 'date'

When I want to select the date column it gives error ORA-01747 namely invalid table.column.

select date from calendars

I guess this happens because 'date' is a reserved word for pl/sql. The problem is it's not even possible to change the column name :

alter table calendars rename column date to date_d

Result is: ORA-00904 error: invalid identifier.

What do you advice?

Thanks.

like image 674
bonsvr Avatar asked Oct 20 '11 21:10

bonsvr


3 Answers

Have you tried

select calendars.date from calendars; /* or you could alias "calendars" if you don't want to type so much */

If that doesn't work or help, have you tried dropping the column (and maybe try referencing it with the table name prefix: calendars.date)?


I also found this post: How do I escape a reserved word in Oracle?

It seems that Oracle will be case-sensitive if you use double quotes so

select "date" from calendars;

is not the same as

select "Date" from calendars;
like image 74
FrustratedWithFormsDesigner Avatar answered Oct 16 '22 15:10

FrustratedWithFormsDesigner


Try escaping the reserved word with double quotes.

select "date" from calendars
like image 24
Joe Stefanelli Avatar answered Oct 16 '22 14:10

Joe Stefanelli


date is a reserved keyword and hence cannot be used like

SELECT date from some table

there can be multiple solutions for the problem

  • The date column needs to be enclosed within the brackets like

SELECT [date] FROM tableName

  • Enclose the reserved keyword in backticks

SELECT 'date' from tableName

  • Use alias

SELECT tableName.date from tableName

like image 1
Ankit Suhail Avatar answered Oct 16 '22 14:10

Ankit Suhail