Почему current_date - это не метод, а версия - это метод в mysql? - PullRequest
1 голос
/ 04 мая 2020

Я прошёл mysql учебник https://dev.mysql.com/doc/refman/8.0/en/entering-queries.html

и наткнулся на

select version(), current_date

Могу ли я узнать, что делает version как метод и current_date не так метод?

Что навязывает mysql разный синтаксис для version и current_date?

1 Ответ

1 голос
/ 04 мая 2020

В стандартном SQL, current_date - это функция, которая не принимает аргументов.

select current_date;

1) s CURRENT_DATE, CURRENT_TIME и CURRENT_TIMESTAMP соответственно возвращают текущую дату, текущее время и текущая метка времени; значения времени и метки времени возвращаются со смещением часового пояса, равным текущему смещению часового пояса SQL -сессии.

Грамматика определяет ее как вызываемую без паренов, в отличие от необязательные скобки на current_time и current_timestamp.

     <current date value function> ::= CURRENT_DATE

     <current time value function> ::=
            CURRENT_TIME [ <left paren> <time precision> <right paren> ]


     <current timestamp value function> ::=
            CURRENT_TIMESTAMP [ <left paren> <timestamp precision> <right paren> ]

Это зарезервированное слово SQL; его нельзя использовать в качестве пустого имени столбца, поэтому current_date однозначно является вызовом функции.

MySQL расширяет его, допуская также символы Parens.

select current_date();

version() является MySQL расширением. Это не зарезервированное слово. Это даже не ключевое слово MySQL. Паренсы должны избегать двусмысленности со столбцом с именем «версия».

mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.19    |
+-----------+

mysql> select version;
ERROR 1054 (42S22): Unknown column 'version' in 'field list'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...