【问题标题】:Is CURRENT_TIMESTAMP a function in ANSI SQL?CURRENT_TIMESTAMP 是 ANSI SQL 中的函数吗?
【发布时间】:2021-07-12 15:22:45
【问题描述】:

我正在使用 bigquery 函数 current_timestamp(),当时我发现您可以根据需要使用它而无需括号。由于它是一个函数,我会提倡括号,但我在互联网上找到的表明你确实可以在没有不同标准的情况下使用它。

我发现在 ANSI SQL 1992 中它确实是一个函数 (based on this answer)。 但是我没有找到为什么允许在没有括号的情况下调用它,即使标准提倡使用括号? Snowflake 是说它允许不带括号的调用符合 ANSI SQL...

那么有人知道它是什么吗?

提前非常感谢!

【问题讨论】:

  • 我只是好奇 - 如果你有 () 有什么关系。
  • 我更清楚我正在使用的类型。如果它是一个函数,它应该在调用结束时有一个(),如果它是一个变量,那么它没有括号,因为它不是一个函数调用。我想我只是受到我对 OOP 和 Java 知识的影响。事实是,在这种情况下它并不重要,但我想在整个组织中对其进行标准化,因此我寻求最合适的标准使用:)
  • 在这里查找 - 可能有助于好奇心.. blog.ansi.org/2018/10/…
  • 谢谢!不过这些文件很贵:(

标签: sql timestamp snowflake-cloud-data-platform ansi


【解决方案1】:

基于2.1.2.70 F411:

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

这是一个函数,(&lt;precision&gt;) 是可选的,所以以下是正确的:

SELECT CURRENT_TIMESTAMP;

SELECT CURRENT_TIMESTAMP(3);

根据该定义,SELECT CURRENT_TIMESTAMP() 不应该工作,但经常被实施。

db<>fiddle demo - MySQLdb<>fiddle demo - PostgreSQL

【讨论】:

  • 非常感谢您的回答,非常清楚! :)
猜你喜欢
  • 1970-01-01
  • 2012-04-22
  • 1970-01-01
  • 1970-01-01
  • 2012-12-07
  • 1970-01-01
  • 2013-04-07
  • 2013-12-30
  • 1970-01-01
相关资源
最近更新 更多