sql teradata 筛选日期 - 数据库版本 Teradata 15.10.06.02 和提供程序版本 Teradata.Net 15.11.0.0

sql teradata filtering on date - database version Teradata 15.10.06.02 and provider version Teradata.Net 15.11.0.0

我的 table 有一个日期列。它的数据类型是日期。我通过转到 table name>>columns 确认它,它说 MTH_END_DT [DATE, Not NULL]

我想过滤特定日期的数据。如果我输入一个条件 where MTH_END_DT = '6/1/2018' 我会得到一个错误 select failed [3535] A character string failed conversion to a numeric value.

我关注了这个page。我使用了 where MTH_END_DT = date '6/1/2018' 但出现错误 syntax error invalid date literal

我试过where cast(timestamp_column as date) = date '2013-10-22';这样的东西,它也抛出错误

我应该如何过滤我的数据?

我觉得很有可能是你输入的日期格式不对?也许它默认包含一个时间。

例如

其中 MTH_END_DT = ‘2013-10-22-00:00:00:00’

只有一种可靠的方法来写日期,使用日期文字date 'yyyy-mm-dd'

where MTH_END_DT = DATE '2018-06-01'

对于时间戳,它是

TIMESTAMP '2018-06-01 15:34:56'

和时间

TIME '15:34:56'

在SQL助手中建议切换到标准SQL格式YYYY-MM-DD工具-选项-数据格式-以此格式显示日期

当我使用 Teradata 过滤查询的特定日期时,我确实遇到了类似的问题。我尝试的第一种方法是将 'DATE' 项如下所示:

WHERE saledate = DATE'04/08/01'但这并没有解决问题。

然后我使用了一种我在网上冲浪时偶然发现的方法,终于奏效了。

WHERE extract(year from saledate)=2004 AND extract(MONTH from saledate)=8 AND extract(DAY from saledate)= 1 source

我认为这真的不应该这么长,但它奏效了。