Hive 解释配置单元日期函数之间使用的两种转换?

Hive 解释配置单元日期函数之间使用的两种转换?,hive,Hive,我试图数一数特定日期的记录数。 最终,让查询工作,但混淆了这两个查询,这两个查询对我来说似乎是一样的。为什么我要在转换中附上日期和时间而不是报价 当我点击查询时 select count(*) from TABLENAME where FROM_UNIXTIME(UNIX_TIMESTAMP(date_time), 'yyyyMMdd')='20170312'; 结果是到达特定日期的计数 但是当我击中 select count(*) from TABLENAME where FROM_UN

我试图数一数特定日期的记录数。 最终,让查询工作,但混淆了这两个查询,这两个查询对我来说似乎是一样的。为什么我要在转换中附上日期和时间而不是报价

当我点击查询时

select count(*) from TABLENAME 
where FROM_UNIXTIME(UNIX_TIMESTAMP(date_time), 'yyyyMMdd')='20170312';
结果是到达特定日期的计数

但是当我击中

select count(*) from TABLENAME 
where FROM_UNIXTIME(UNIX_TIMESTAMP('date_time', 'yyyyMMdd'))='20170312';
结果是0


请解释这些查询的区别。

date\u time
是一列,而
'date\u time'
是一个字符串,尝试将其用作日期将导致NULL。

如果您想限定列名,您应该使用'date\u time`

不带引号地使用FROM\u UNIXTIME(UNIX\u TIMESTAMP(date\u time,'yyyyymmdd'))='20170312'怎么样;理想情况下,第一个示例是有效的。你能说说为什么第三个例子不起作用,因为我不使用字符串来表示。我只是注意到你评论中的例子与文章中的第一个例子不同。右括号(
)不在同一位置。