PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Hiểu các loại ngày và chức năng của PostgreSQL (bằng các ví dụ)

Trong bài viết này, chúng ta sẽ xem xét cách làm việc với ngày tháng trong PostgreSQL, bao gồm các kiểu và định dạng dữ liệu ngày tháng khác nhau, chức năng của chúng và cách xử lý chúng trong thói quen hàng ngày của bạn. Chúng tôi sẽ sử dụng dbForge Studio cho PostgreSQL để minh họa các ví dụ.

Bạn có thể sử dụng ngày và dấu thời gian để phân tích dữ liệu và lưu trữ dữ liệu, vì chúng cho phép bạn xác định thời điểm một sự kiện thực sự xảy ra. Điều khó khăn về ngày tháng là định dạng của chúng khác nhau ở các quốc gia khác nhau, vì vậy nó có thể là một nhiệm vụ khá khó khăn cho người mới bắt đầu quản lý cơ sở dữ liệu. Kiểu dữ liệu và định dạng của cột ngày phải luôn nhất quán với thông tin người dùng nhập vào. Ngoài ra, bạn nên sửa đổi định dạng ngày để đáp ứng sở thích của người dùng. Postgres có khả năng xử lý nhiều định dạng dữ liệu.

Nội dung

  • Tổng quan về kiểu dữ liệu PostgreSQL DATE
  • Sử dụng ngày hiện tại làm giá trị mặc định
  • Các hàm Postgres DATE
  • Sử dụng hàm NOW () để lấy ngày hiện tại
  • Sử dụng hàm TO_CHAR () - xuất giá trị ngày ở định dạng được chỉ định
  • Sử dụng toán tử trừ để nhận khoảng thời gian giữa hai ngày
  • Sử dụng hàm AGE () để nhận chênh lệch ngày theo năm, tháng và ngày
  • Sử dụng hàm EXTRACT () để nhận năm, quý, tháng, tuần, ngày từ một giá trị ngày
  • Sử dụng TO_TIMESTAMP () để chuyển đổi một chuỗi thành dấu thời gian
  • Tóm tắt

Tổng quan về loại dữ liệu PostgreSQL DATE

DATE kiểu dữ liệu trong PostgreSQL được sử dụng để lưu trữ ngày tháng ở định dạng YYYY-MM-DD (ví dụ:2022-03-24). Nó cần 4 byte để lưu trữ giá trị ngày tháng trong một cột. Lưu ý rằng ngày sớm nhất có thể là năm 4713 trước Công nguyên và ngày muộn nhất có thể là năm 5874897 sau Công nguyên.

Điều quan trọng là duy trì khả năng đọc mã ở giai đoạn viết nó. dbForge Studio cho PostgreSQL có thể tự hào về một PostgreSQL Formatter thuận tiện và trực quan. Đảm nhận việc định dạng mã, kiểm tra cú pháp và hoàn thành mã, tính năng định dạng Postgres SQL được tích hợp trong dbForge Studio dành cho PostgreSQL sẽ cho phép bạn tập trung vào xử lý kiểu dữ liệu DATE.

Sử dụng ngày hiện tại làm giá trị mặc định

Giá trị mặc định trong DATE cột trong cơ sở dữ liệu Postgres có thể được đặt bằng cách sử dụng từ khóa DEFAULT CURRENT DATE , như trong tập lệnh bên dưới:

  CREATE TABLE myevents (event_id serial KEY CHÍNH, event_details VARCHAR (255) NOT NULL, event_date DATE NOT NULL DEFAULT CURRENT_DATE); CHÈN VÀO myevents (event_details) VALUES ('Gặp gỡ khách hàng ABC'); CHỌN * TỪ myevents;  

Như bạn có thể thấy, một giá trị cho [ngày diễn ra sự kiện] cột được máy chủ PostgreSQL chèn tự động, sử dụng ngày hệ thống hiện tại ở định dạng YYYY-MM-DD.

Postgres DATE Functions

Đôi khi, điều quan trọng là phải thay đổi định dạng ngày hoặc tính toán các giá trị trong bảng PostgreSQL. Chúng tôi có thể cần làm điều này cho người dùng từ các múi giờ khác nhau trên toàn thế giới. Trong trường hợp này, các Hàm SQL là rất quan trọng.

Sử dụng hàm NOW () để lấy ngày hiện tại

  CHỌN ngay ();  

Bạn có thể sử dụng dấu hai chấm (::) để truyền DATETIME giá trị thành DATE giá trị như hình dưới đây:

Dấu thời gian hiện tại của hệ thống được trả về bởi NOW () hàm số. Cú pháp như sau:

  CHỌN ngay () ::date;  

Sử dụng hàm TO_CHAR () - xuất giá trị ngày ở định dạng được chỉ định

Để trình bày đầu ra của giá trị ngày Postgres ở định dạng được chỉ định, TO_CHAR () chức năng có ích. Cú pháp như sau:

  TO_CHAR (biểu thức, định dạng)  

Có hai tham số được chấp nhận bởi TO_CHAR () chức năng:

  • Ngày nhập :Ngày được chuyển đổi thành một định dạng cụ thể.
  • Định dạng ngày :Trình giữ chỗ cho thông số định dạng ngày mới.

Hãy xem cách chuyển đổi các giá trị ngày hiện tại từ [MyEvents] bảng ở định dạng DD-MM-YYYY.

  SELECT event_details, event_date as ExistingDateformat, to_char (event_date, 'DD-MM-YYYY') as NewDateFormat FROM myevents;  

Để chuyển đổi dấu thời gian hiện tại thành định dạng ưa thích, bạn có thể kết hợp TO_CHAR () NOW () các chức năng.

  CHỌN TO_CHAR (NOW () ::DATE, 'dd-mm-yyyy');  

Sử dụng toán tử dấu trừ để nhận khoảng thời gian giữa hai ngày

Để tính toán sự khác biệt giữa hai ngày, hãy sử dụng toán tử trừ (-). Truy vấn bên dưới cung cấp khoảng thời gian từ dấu thời gian hiện tại đến [ngày sự kiện] từ MyEvents bàn.

  CHỌN event_date, now () as currentdate, now () - event_date as Interval FROM myeventswhere event_id =2;  

Bạn cũng có thể chọn khoảng thời gian để trả lại ngày khi một khoảng thời gian nhất định đã trôi qua. Hãy xem truy vấn bên dưới:

« event_date- khoảng '1 năm') dưới dạng eventdatedifferencefrom myevents;

Sử dụng hàm AGE () để nhận chênh lệch ngày theo năm, tháng và ngày

Với AGE () chức năng, bạn có thể nhận được sự khác biệt ngày trong năm, tháng và ngày. Chức năng này có thể được sử dụng để xác định tuổi của một người. Giá trị ngày đầu tiên được trừ cho giá trị ngày thứ hai bằng hàm này, hàm này chấp nhận hai đầu vào ngày. Khi các giá trị trong tập lệnh hàm bị đảo ngược, kết quả là giá trị âm.

Hãy cùng tìm hiểu tuổi của người có ngày sinh là 1995-10-09. Cú pháp như sau:

  SELECT current_date, AGE (timestamp '1995-10-09' ::timestamp) as EmpAge;  

Sử dụng hàm EXTRACT () để nhận năm, quý, tháng, tuần, ngày từ một giá trị ngày

EXTRACT () hàm trả về một ngày, tuần, tháng, năm và một phần tư từ giá trị ngày được chỉ định.

Trích xuất một năm:

  CHỌN CHIẾT XUẤT (NĂM TỪ TIMESTAMP '2022-04-09 10:30:15') thành năm;  

Trích xuất một tháng:

  CHỌN CHIẾT XUẤT (Tháng TỪ TIMESTAMP '2022-04-09 10:30:15') thành Tháng;  

Trích một phần tư:

  CHỌN CHIẾT XUẤT (QUARTER FROM TIMESTAMP '2022-04-09 10:30:15') làm QUARTER;  

Trích ngày trong tuần:

  CHỌN CHIẾT XUẤT (DOW FROM TIMESTAMP '2022-04-09 10:30:15') làm DOW;  

Trích ngày trong năm:

  CHỌN CHIẾT XUẤT (DOY FROM TIMESTAMP '2022-04-09 10:30:15') làm DOY;  

Lưu ý rằng dbForge Studio hiển thị từng kết quả thực thi truy vấn trong một tab riêng biệt.

EXTRACT () có thể dễ dàng kết hợp chức năng với INTERVAL . Giả sử chúng ta muốn đặt khoảng thời gian là 5 năm 8 tháng 23 ngày 08 giờ 10 phút và 20 giây. Các giá trị riêng lẻ được trả về bởi EXTRACT chức năng.

  SELECT EXTRACT (YEARFROM INTERVAL '5 năm 8 tháng 23 ngày 08 giờ 10 phút 20 giây'), EXTRACT (MonthFROM INTERVAL '5 năm 8 tháng 23 ngày 08 giờ 10 phút 20 giây'), EXTRACT (DayFROM INTERVAL '5 năm 8 tháng 23 ngày 08 giờ 10 phút 20 giây'), TRÍCH (giờ FROM INTERVAL '5 năm 8 tháng 23 ngày 08 giờ 10 phút 20 giây'), TRÍCH (MinuteFROM INTERVAL '5 năm 8 tháng 23 ngày 08 giờ 10 phút 20 giây ');  

Sử dụng TO_TIMESTAMP () để chuyển đổi một chuỗi thành dấu thời gian

Bạn có thể giữ các giá trị ngày trong UTC (Bộ điều phối thời gian toàn cầu) và thay đổi múi giờ nếu cần nếu bạn muốn chuyển đổi dấu thời gian thành một múi giờ khác.

  CHỌN * TỪ pg_timezone_names;  

Để kiểm tra múi giờ hiện tại, hãy sử dụng SHOW TIMEZONE lệnh.

Bạn có thể sử dụng AT TIME ZONE để nhận kết quả cho múi giờ đã chọn bằng cách chọn giá trị múi giờ cần thiết từ pg_timezone_names bảng.

  SELECT '2022-04-09 10:36:19' ::timestamp AT TIME ZONE 'America / Los_Angeles';  

AT TIME ZONE cho phép bạn có nhiều đầu ra múi giờ khác nhau.

  SELECT '2022-04-09 10:36:19' ::timestamp AT TIME ZONE 'America / Washington'; SELECT '2022-04-09 10:36:19' ::timestamp AT TIME ZONE 'Châu Á / Bắc Kinh'; CHỌN '2022-04-09 10:36:19' ::dấu thời gian TẠI KHU VỰC THỜI GIAN 'Châu Âu / Kyiv';  

Tóm tắt

Tóm lại, PostgreSQL DATE kiểu dữ liệu rất quan trọng và hữu ích khi lưu trữ ngày tháng và dấu thời gian trong bảng, vì vậy nó khá phổ biến trong cơ sở dữ liệu quan hệ. Phạm vi sử dụng của chúng vô cùng rộng, đó là lý do tại sao điều quan trọng là phải làm cho chúng rõ ràng đối với bất kỳ người dùng nào ở bất kỳ quốc gia và múi giờ nào. Với các chức năng Postgres khác nhau, thật dễ dàng đáp ứng nhu cầu của người dùng, vì bạn có thể thay đổi ngày tháng để chúng có thể được sử dụng trong một múi giờ cụ thể, với một định dạng nhất định và các chi tiết khác giúp làm việc với những dữ liệu đó dễ dàng hơn nhiều. Cuối cùng, nếu bạn đang tìm kiếm sự kết hợp hoàn hảo giữa giao diện đồ họa trực quan và dòng lệnh tăng cường có thể làm việc với DATE kiểu dữ liệu thậm chí còn dễ chịu hơn, dbForge Studio cho PostgreSQL sẽ rất hữu ích.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chuyển đổi một ngày Julian thành một ngày trong PostgreSQL

  2. Có thể thực hiện các truy vấn cơ sở dữ liệu chéo với PostgreSQL không?

  3. Gọi một thủ tục được lưu trữ trong một thủ tục được lưu trữ

  4. Chèn nhiều hàng trong một bảng dựa trên số trong bảng khác

  5. Sự cố khi nhập tệp txt vào postgres bằng php