interogare pentru a returna o anumită dată din teradata timestamp(6) (Programare, Sql, Teradata)

RRR a intrebat.

Cum pot să caut o anumită dată, de exemplu: „2013-10-22” din câmpul teradata timestamp(6)?

sel * from table A
where date = '2013-10-22';

Am încercat interogarea de mai sus, care aruncă o eroare. Vă rog să mă ajutați!

3 răspunsuri
Rahul Tripathi

Puteți încerca astfel: –

sel * from table A
where date = date '2013-10-22';

Din moment ce în forma standard ANSI (trebuie să fie precedat de cuvântul cheie DATE)

Verificați acest

Comentarii

  • @RRRR:- Cu plăcere. Acceptați acest lucru ca răspuns dacă v-a ajutat! –  > Por Rahul Tripathi.
  • Pot să știu, de asemenea, cum pot să grupez prin numai cu data din timestamp? –  > Por RRR.
  • @RRRR: – Nu am înțeles că ceea ce cereți? Ați putea pune o altă întrebare! –  > Por Rahul Tripathi.
  • Dacă vreau să grupez prin în ceea ce privește coloana timestamp, numai în ceea ce privește data. de exemplu: atunci când efectuez gruparea prin data creată, oferă toate înregistrările separat, deoarece timpul din fiecare valoare este diferit. vreau să grupez toate datele similare împreună, indiferent de timpul din câmpurile timestamp –  > Por RRR.
  • @RRRR:- Nu cred că este posibil, însă puteți grupa după coloana de date! –  > Por Rahul Tripathi.
BellevueBob

Și mai formal:

select * 
from table A
where cast(timestamp_column as date) = date '2013-10-22';

Presupun că ați arătat doar un exemplu, pentru că nu cred că puteți avea o coloană numită date; este un cuvânt rezervat. Cuvântul cheie „data” de mai sus este modul în care specificați o constantă de dată ANSI și nu are legătură cu funcția „date”.

Comentarii

  • Lucrul neașteptat este că: nici măcar nu trebuie să faceți CAST. Atunci când un Timestamp este comparat cu o dată, acesta este automat transformat într-o dată. Nu știu dacă acest lucru se bazează pe Standard SQL, dar când am investigat un presupus bug am găsit acest lucru definit în manuale. –  > Por dnoeth.
  • Utilizarea funcțiilor în clauza where în acest mod tinde să încetinească producția. Acest lucru este amplificat dacă aplicați funcția la un câmp indexat. –  > Por Dan Bracuk.
  • @dnoeth Da, îmi cam amintesc asta, dar urăsc să scriu cod care utilizează conversii implicite. Același motiv pentru care folosesc întotdeauna funcția date modificator în fața unui șir de date. Nu este chiar necesar, dar îmi este mult mai clar ce se întâmplă. –  > Por BellevueBob.
  • Dacă vreau să grupez după coloana timestamp, numai după dată. de exemplu: când efectuez gruparea după data creată, îmi dă toate înregistrările separat, deoarece ora din fiecare valoare este diferită. vreau să grupez toate datele similare, indiferent de ora din câmpurile timestamp –  > Por RRR.
  • @RRR Cred că chestiunea „group by” merită o întrebare separată. Puneți o altă întrebare și nu uitați să arătați un exemplu de ceea ce doriți. Spunând „grupați după în funcție de timestamp” nu prea are sens. –  > Por BellevueBob.
Dan Bracuk

Ceva de genul acesta:

where YourTimestampField >= {d '2013-10-22'}
and YourTimestampField < {d '2013-10-23'}

Comentarii

  • Dacă vreau să grupez după cu privire la coloana timestamp, doar wrt data. de exemplu: când efectuez group by createddate, îmi dă toate înregistrările separat pentru că timpul din fiecare valoare este diferit. vreau să grupez toate datele similare împreună indiferent de timpul din câmpurile timestamp –  > Por RRR.