我正在使用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”(“和EXTRACT关键字。
我在网上阅读了这些功能,并且不明白为什么会失败。我错过了什么吗?
答案 0 :(得分:1)
根据我的知识和测试,以下不是Teradata 14.0中的本机函数或ODBC扩展:
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
函数一起使用时,它不是有效的INTERVAL类型:
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,
虽然您的第一个解决方案在数据库中可用的格式选项方面可能是最灵活的。