2014-04-16 60 views
0

我使用Teradata作为我的SQL客户端,并且一直在使用日期格式公式。日期格式不起作用

许多人似乎不工作。

这里有一个简单的查询,做工作:

EVENT_GMT_TIMESTAMP(FORMAT 'yyyy-mm')(char(7)) AS YEAR_MONTH, 

但是我发现,我想记住但没有人会更容易一些方法似乎工作:

DATE_FORMAT(EVENT_GMT_TIMESTAMP,'%M-%Y') 

给出语法错误“EVENT_GMT_TIMESTAMP不符合定义类型名称“

然后尝试(我最喜欢的潜在解决方案):

EXTRACT(YEAR_MONTH FROM EVENT_GMT_TIMESTAMP) AS YEAR_MONTH, 

给出语法错误“期望像DAY关键字或HOUR关键字或MINUTE关键字之间的”(“和YEAR_MONTH。

然后尝试,只是为了看看它的工作原理:

CONCAT(EXTRACT(YEAR FROM EVENT_GMT_TIMESTAMP), EXTRACT(MONTH FROM EVENT_GMT_TIMESTAMP)) AS YEAR_MONTH, 

给出语法错误“之间的预期soemthing‘(’和提取关键字

我读到这些功能的在线和不;吨了解。 ?他们为什么没有我缺少的东西

+1

有点让人费解:Teradata是一个SQL数据库*服务器*。这不是一个“SQL客户端”。 “客户端”是您用来访问Teradata服务器的程序。 –

+0

那么,Teradata接口会被视为客户端吗? –

回答

1

据我所知和测试,以下是不是本地函数或ODBC扩展为Teradata的14.0:

DATE_FORMAT(EVENT_GMT_TIMESTAMP,'%M-%Y') 
CONCAT(EXTRACT(YEAR FROM EVENT_GMT_TIMESTAMP), EXTRACT(MONTH FROM EVENT_GMT_TIMESTAMP)) AS YEAR_MONTH, 

“YEAR_MONTH”是不是与EXTRACT功能在这里使用一个有效的时间间隔类型:不要使用以下

EXTRACT(YEAR_MONTH FROM EVENT_GMT_TIMESTAMP) AS YEAR_MONTH, 

考虑:

EXTRACT(YEAR FROM EVENT_GMT_TIMESTAMP) || '-' || EXTRACT(MONTH FROM EVENT_GMT_TIMESTAMPE) AS YEAR_MONTH, 

虽然你的第一个解决方案可能是最灵活的数据库中可用的格式选项条款。

+0

哦,这不是我的,它是我的SQL客户端,Teradata? –

+0

另外,根据这个链接YEAR_MONTH是一个有效的间隔类型? http://www.w3schools.com/sql/func_extract.asp - 在表格底部查看它?你提供的最后一个解决方案 - 输出仍然是日期还是字符串? –

+1

您提供的链接是针对MySQL而不是Teradata。 YEAR_MONTH不被Teradata支持。由于正在执行连接操作,最后的结果将是STRING。 –

相关问题