什么是日期格式的Teradata SQL中的字符(7)?

什么是日期格式的Teradata SQL中的字符(7)?,sql,date,teradata,Sql,Date,Teradata,我试图在Teradata中的以下SQL中了解char7的概念: SELECT current_date (FORMAT'YYYY-MM') (char(7)); 只要它强制显示正确的格式,就可以完全按照指定的格式显示。 当我尝试在结尾不使用char7时,格式不符合规定,例如: SELECT current_date (FORMAT 'YYYY-MM'); 同时返回日期,忽略format命令: 作为一个子问题-这是从日期列显示月份和年份的正确方法吗?对于char7,我建议在这里使用TO_CHA

我试图在Teradata中的以下SQL中了解char7的概念:

SELECT current_date (FORMAT'YYYY-MM') (char(7));
只要它强制显示正确的格式,就可以完全按照指定的格式显示。 当我尝试在结尾不使用char7时,格式不符合规定,例如:

SELECT current_date (FORMAT 'YYYY-MM');
同时返回日期,忽略format命令:

作为一个子问题-这是从日期列显示月份和年份的正确方法吗?对于char7,我建议在这里使用TO_CHAR:


这就解决了您的问题,因为TO_CHAR的约定是使用您指定的格式掩码返回输入日期时间的字符串表示形式。您不必担心请求特定的字符串宽度。

因此,char7实际上是强制teradata使用7个字符的长度来表示日期,因此它会尽最大努力遵循该格式吗?换言之,char7对于那些无法格式化日期的人来说是一个肮脏的黑客程序?可能不是我在前面的评论中所假设的,因为当前的_DATEFORMAT'YYYY'char20返回年份,遵循格式。@Vityata:当日期被强制转换为字符串时,会应用该格式。它主要用于在BTEQ中创建报告,自动将所有内容强制转换为字符串。在BTEQ外部运行第二个Select时,Teradata将返回原始数据类型日期,而SQL Assistant将在本地忽略该格式。CHAR7强制DBMS使用YYYY-MM格式从日期转换为字符串。@dnoeth-我明白了,我认为CHARN确实是一种强制执行。但是我在BTEQ中运行了第二个SELECT,它仍然忽略了格式规则。@如果继续这样说,您可能会被选中:-显示月份和年份的正确方式取决于您的规则,“2020JAN”、“202001”作为字符串或202001作为整数,等等。
SELECT TO_CHAR(CURRENT_DATE, 'YYYY-MM');