0

我正在使用以下代码从 PostgreSQL 中的任何给定时间戳中提取日期部分:

SELECT DATE('2004-07-17 01:00:00'); 

上面的语句工作正常,结果是2004-07-17.

但是,date()PostgreSQL 文档中描述的函数在哪里?

我在本节中广泛搜索了它:http ://www.postgresql.org/docs/9.2/static/functions-datetime.html ,但是到目前为止没有发现任何用处......

4

2 回答 2

4

没有对date()功能的描述,因为它只是cast迄今为止的一个刺痛。喜欢cast('2004-07-17 01:00:00' as date)'2004-07-17 01:00:00'::date

如果我没记错的话,您可以使用该表单date('2004-07-17 01:00:00'),因为在内部,所有强制转换都是作为函数实现的,并且您直接调用其中一个函数。或者它可以只是另一块语法糖。

更新:您正在搜索的手册部分是here. 第 4.2.9 章。类型铸件。

还有一些关于如何实现强制转换的有用信息here

更新2:手册中的引用:

注意:类函数语法实际上只是一个函数调用。当使用两种标准转换语法之一进行运行时转换时,它将在内部调用已注册的函数来执行转换。按照惯例,这些转换函数与其输出类型具有相同的名称,因此“类函数语法”只不过是对底层转换函数的直接调用。显然,这不是可移植应用程序应该依赖的东西。有关更多详细信息,请参阅 CREATE CAST。

于 2013-04-28T12:56:04.120 回答
2

我认为这只是标准 SQL 的语法糖。在标准 SQL 中,您可以这样表达日期;PostgreSQL 接受相同的语法。

select date '2004-07-17 01:00:00'

同样,PostgreSQL 返回值“2004-07-17”,它的类型是“日期”。我认为您在文档中找到的最接近的是Date/Time Input中的这一段。(但这记录的是 SQL 标准,而不是语法糖。)

请记住,任何日期或时间文字输入都需要用单引号括起来,如文本字符串。有关详细信息,请参阅第 4.1.2.7 节。SQL 需要以下语法

键入 [ (p) ] '值'

其中 p 是可选的精度规范,给出秒字段中的小数位数。可以为时间、时间戳和间隔类型指定精度。

此外,时间戳的语法也类似。

select timestamp '2004-07-17 01:00:00'

请注意,这在 PostgreSQL 中不起作用. .

select timestamp('2004-07-17 01:00:00')

但这

select "timestamp"('2004-07-17 01:00:00')
于 2013-04-28T12:45:18.817 回答