2017-03-16 1 views
0

Ich versuche, die Anzahl der Datensätze in dem bestimmten Datum zu zählen. schließlich, hat die Abfrage funktioniert, aber verwirrt zwischen diesen beiden Abfragen, die für mich gleich schien. warum sollte ich die date_time anstelle von quote in die umrechnung einschließen.erklären die beiden Konvertierungen zwischen Hive-Date-Funktionen verwendet?

wenn ich die Abfrage getroffen,

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

Ergebnis ist Zahl des jeweiligen Zeitpunkt angekommen ist.

aber wenn ich getroffen,

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

das Ergebnis 0.

bitte den Unterschied dieser Abfragen erklären.

Antwort

0

date_time ist eine Spalte, während 'date_time' eine Zeichenfolge ist und der Versuch, es als Datum zu verwenden, in NULL resultiert.
Wenn Sie den Spaltennamen qualifizieren möchten, sollten Sie `date_time` verwenden

+0

Wie wäre es mit der Verwendung ohne Anführungszeichen wie FROM_UNIXTIME (UNIX_TIMESTAMP (date_time, 'yyyyMMdd')) = '20170312'; –

+0

Dies funktioniert, wie in Ihrem ersten Beispiel –

+0

ideal, erstes Beispiel funktioniert. Können Sie bitte sagen, warum ist das dritte Beispiel nicht funktioniert, da ich keine Zeichenfolge zu repräsentieren. –

Verwandte Themen