我使用以下代码从PostgreSQL中的任何给定时间戳中提取日期部分:
SELECT DATE('2004-07-17 01:00:00');
上述声明正常,结果为2004-07-17
。
但是,PostgreSQL文档中描述的date()
函数在哪里?
我在本节中广泛搜索过:http://www.postgresql.org/docs/9.2/static/functions-datetime.html,但到目前为止没有找到任何用处......
答案 0 :(得分: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。
答案 1 :(得分:2)
我认为这只是标准SQL的语法糖。在标准SQL中,您表达这样的日期; PostgreSQL接受相同的语法。
select date '2004-07-17 01:00:00'
同样,PostgreSQL返回值'2004-07-17',它的类型为“date”。我认为文档中最接近的是Date/Time Input中的这一段。 (但这记录了SQL标准,而不是语法糖。)
请记住,任何日期或时间文字输入都需要用单引号括起来,比如文本字符串。有关更多信息,请参见第4.1.2.7节。 SQL需要以下语法
输入[(p)]'value'
其中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')