sql >> Database >  >> RDS >> PostgreSQL

Datumkolomberekening in PostgreSQL-query

U moet t1.user_id aan de tabel kwalificeren ondubbelzinnig te maken. Plus andere aanpassingen:

CREATE TABLE foo AS 
SELECT user_id, (t1.the_date - (t2.the_date - t1.the_date)) AS start_date
FROM   table1 t1
JOIN   table2 t2 USING (user_id);
  • Het aftrekken van twee datums levert een geheel getal op. Cast was overbodig.

  • Laat de AS niet weg trefwoord voor kolomaliassen - hoewel het over het algemeen goed is om AS weg te laten voor tabelaliassen. De handleiding:

    U kunt AS weglaten , maar alleen als de gewenste uitvoernaam niet overeenkomt met een PostgreSQL-sleutelwoord (zie bijlage C). Voor bescherming tegen mogelijke toekomstige toevoegingen van trefwoorden, wordt aanbevolen dat u altijd AS . schrijft of dubbele aanhalingstekens voor de uitvoernaam.)

  • Tabellen samenvoegen met een USING clausule houdt slechts één instantie van de samengevoegde kolommen (user_id in dit geval) in de resultatenset en u hoeft deze niet meer te kwalificeren.




  1. Vergelijk datums die zijn opgeslagen als string met behulp van Datetime

  2. Oracle zweeft versus nummer

  3. mysql-fout 1364 Veld heeft geen standaardwaarden

  4. Hoe de create table sql-instructie voor een bestaande tabel in postgreSQL te genereren?