PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Bagaimana to_date() Bekerja di PostgreSQL

Di PostgreSQL, Anda dapat menggunakan to_date() berfungsi untuk mengubah string menjadi tanggal.

Sintaks

Sintaksnya seperti ini:

to_date(text, text)

Dimana argumen pertama adalah representasi string dari tanggal, dan argumen kedua mendefinisikan template yang digunakan argumen pertama.

Contoh

Berikut adalah contoh dasar untuk didemonstrasikan.

SELECT to_date('10th Feb 2010', 'DD Mon YYYY');

Hasil:

2010-02-10

Templat

Argumen kedua menyediakan template yang menyediakan argumen pertama. Ini kadang-kadang disebut sebagai "string format".

Template terdiri dari satu atau lebih pola template, dan secara opsional, satu atau lebih pengubah pola template.

Pola Template

Menggunakan contoh sebelumnya, DD adalah pola template dan Mon adalah pola pola. YYYY juga merupakan pola template. Ini semua digabungkan untuk membentuk template.

Anda dapat memindahkan setiap pola template sesuai kebutuhan. Dan Anda dapat menggunakan pola template yang berbeda secara bersamaan.

Berikut adalah beberapa contoh lain yang menggunakan tanggal yang sama, tetapi dalam format yang berbeda (dan oleh karena itu, menggunakan template yang berbeda).

\x
SELECT 
  to_date('10 Feb 2010', 'DD Mon YYYY') AS "DD Mon YYYY",
  to_date('Feb 10 2010', 'Mon DD YYYY') AS "Mon DD YYYY",
  to_date('10/02/2010', 'DD/MM/YYYY') AS "DD/MM/YYYY",
  to_date('02/10/2010', 'MM/DD/YYYY') AS "MM/DD/YYYY",
  to_date('02-10-2010', 'MM-DD-YYYY') AS "MM-DD-YYYY",  
  to_date('02102010', 'MMDDYYYY') AS "MMDDYYYY",
  to_date('02-10-10', 'MM-DD-YY') AS "MM-DD-YY";

Hasil (menggunakan keluaran vertikal):

DD Mon YYYY | 2010-02-10
Mon DD YYYY | 2010-02-10
DD/MM/YYYY  | 2010-02-10
MM/DD/YYYY  | 2010-02-10
MM-DD-YYYY  | 2010-02-10
MMDDYYYY    | 2010-02-10
MM-DD-YY    | 2010-02-10

Jadi mereka semua menggunakan tanggal yang sama, tetapi tanggal diberikan dalam format yang berbeda. Adalah tugas templat untuk secara eksplisit menentukan ke Postgres format apa tanggal telah disediakan.

Seperti yang mungkin Anda bayangkan, jika kami tidak menyediakan template, beberapa tanggal dapat diinterpretasikan dengan cara yang salah, terutama jika tanggal tersebut menggunakan lokal yang berbeda untuk formatnya.

Misalnya, 01/03/2010 dapat diartikan sebagai tanggal satu Maret atau ketiga Januari, bergantung pada lokalnya.

Pengubah Pola Template

Terkadang Anda mungkin juga perlu menambahkan pengubah pola template ke template.

Misalnya, jika tanggal Anda menggunakan akhiran nomor urut, Anda harus memastikan bahwa itu ditafsirkan seperti itu.

SELECT 
  to_date('10th Feb 2010', 'DDth Mon YYYY') AS "10th Feb 2010",
  to_date('01st Feb 2010', 'DDth Mon YYYY') AS "01st Feb 2010",
  to_date('03rd Feb 2010', 'DDth Mon YYYY') AS "03rd Feb 2010";

Hasil (menggunakan keluaran vertikal):

10th Feb 2010 | 2010-02-10
01st Feb 2010 | 2010-02-01
03rd Feb 2010 | 2010-02-03

Jika saya tidak menggunakan pengubah pola template, saya akan menerima kesalahan saat menggunakan tanggal tersebut.

Berikut ini contoh untuk diilustrasikan.

SELECT to_date('10th Feb 2010', 'DD Mon YYYY');

Hasil:

ERROR: invalid value "th" for "Mon"
DETAIL: The given value did not match any of the allowed values for this field.

Daftar Lengkap Pola &Pengubah Template

Postgres menyertakan lebih banyak pola dan pengubah template.

Ini juga dapat digunakan saat memformat nilai tanggal/waktu (misalnya saat menggunakan to_char() berfungsi untuk mengonversi stempel waktu menjadi string).

Lihat Pola &Pengubah Template untuk Pemformatan Tanggal/Waktu di PostgreSQL untuk daftar lengkapnya.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Target waktu pemulihan pgbackrest

  2. Muat dump Postgres setelah docker-compose up

  3. Cara Menyebarkan PostgreSQL ke Wadah Docker Menggunakan ClusterControl

  4. Lewati parameter WHERE ke Tampilan PostgreSQL?

  5. Bagaimana cara saya menulis data dari tabel R ke PostgreSQL dengan kunci utama peningkatan otomatis?