我正在使用以下代码从 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 ,但是到目前为止没有发现任何用处......
我正在使用以下代码从 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 ,但是到目前为止没有发现任何用处......
没有对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。
我认为这只是标准 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')