PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Два въпроса за форматиране на клеймо за време и номер с помощта на postgresql

Изглежда, че функциите to_timestamp() и to_char() за съжаление не са перфектни. Ако не можете да намерите нещо по-добро, използвайте тези заобиколни решения:

with example_data(d) as (
    values ('2016-02-02')
    )
select d, d::timestamp || '.0' tstamp
from example_data;

     d      |        tstamp         
------------+-----------------------
 2016-02-02 | 2016-02-02 00:00:00.0
(1 row)

create function my_to_char(numeric)
returns text language sql as $$
    select case 
        when strpos($1::text, '.') = 0 then $1::text
        else rtrim($1::text, '.0')
    end
$$;

with example_data(n) as (
    values (100), (2.00), (3.34), (4.50))
select n::text, my_to_char(n)
from example_data;

  n   | my_to_char 
------+------------
 100  | 100
 2.00 | 2
 3.34 | 3.34
 4.50 | 4.5
(4 rows)

Вижте също:Как да премахнете точката в to_char, ако числото е цяло число



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Защо дори да използвате *DB.exec() или подготвени изрази в Golang?

  2. Как да направя XML канонично сравнение с PostgreSQL?

  3. Тези проклети големи обекти

  4. Съхраняването на json, jsonb, hstore, xml, enum, ipaddr и т.н. е неуспешно с колона x е от тип json, но изразът е от тип символ, различен

  5. NULL стойности за колони referential_constraints.unique_constraint_* в информационната схема