2015-08-01 12 views
9

Tôi cần lưu trữ cả hai thời gianngày trong mysql này. Vì vậy, tôi đã sử dụng chức năng NOW() cho điều đó. Nhưng tôi không biết mình nên sử dụng gì cho loại cột im phpmyadmin. Cần lưu ý rằng NOW() lợi nhuận cả thời gian và ngày như thế này:Sự khác nhau giữa các loại DATE, TIME, DATETIME và TIMESTAMP

2014-11-11 12:45:34 

Dưới đây là một giải pháp, tôi có thể sử dụng các thiết bị tách cho ngày và thời gian (2014-11-1112:45:34) tách và sau đó lưu trữ chúng trong các loại NGÀY và TIME loại riêng lẻ. Hoặc tôi có thể sử dụng loại VARCHAR để lưu trữ cả hai trong một cột. Nhưng tôi nghĩ những cách này không phải là tiêu chuẩn. loại tiêu chuẩn để lưu trữ cả ngày và thời gian là gì?

Đây là câu hỏi của tôi: (tôi cũng không biết tại sao NOW() chức năng không hoạt động)

INSERT INTO table (timedate) VALUES (NOW()) 
+1

[Bài viết này từ Tài liệu MySQL] (https://dev.mysql.com/doc/refman/5.6/en/date-and-time-types.html) giải thích rõ điều này. –

+1

* KHÔNG BAO GIỜ * lưu trữ ngày hoặc thời gian dưới dạng varchar. –

Trả lời

21

NGÀY: Nó được sử dụng cho các giá trị với một phần ngày nhưng không có bán thời gian. MySQL truy xuất và hiển thị các giá trị DATE ở định dạng 'YYYY-MM-DD'. Phạm vi được hỗ trợ là '1000-01-01' to '9999-12-31'.

DATETIME: Được sử dụng cho các giá trị chứa cả ngày và giờ. MySQL truy xuất và hiển thị các giá trị DATETIME ở định dạng 'YYYY-MM-DD HH:MM:SS'. Phạm vi được hỗ trợ là '1000-01-01 00:00:00' to '9999-12-31 23:59:59'.

Dấu thời gian: Nó được sử dụng cho các giá trị chứa cả ngày và phần thời gian. Dấu thời gian có một loạt các '1970-01-01 00:00:01' UTC to '2038-01-19 03:14:07' UTC.

TIME: giá trị của nó trong 'HH:MM:SS' format (hoặc 'HHH: MM: SS' định dạng trong nhiều giờ lớn giá trị). Giá trị TIME có thể nằm trong khoảng từ '-838:59:59' to '838:59:59'. Phần giờ có thể quá lớn vì loại TIME có thể được sử dụng không chỉ để biểu thị thời gian trong ngày (phải ít hơn 24 giờ), mà còn thời gian trôi qua hoặc khoảng thời gian giữa hai sự kiện (có thể lớn hơn nhiều 24 giờ, hoặc thậm chí tiêu cực).

+0

'UTC' trong' TIMESTAMP' là gì? – Shafizadeh

+0

@Sajad - UTC là [Giờ quốc tế phối hợp] (https://en.wikipedia.org/wiki/Coordinated_Universal_Time). Hãy chắc chắn nhận ra rằng 'DATETIME' và' TIMESTAMP' khác nhau về cách chúng chuyển đổi thành và từ giờ địa phương sang UTC. –

+0

@Shafizadeh bất kỳ chức năng/truy vấn mysql nào để chuyển đổi dấu thời gian thành datetime? –

3

Saty mô tả sự khác biệt giữa chúng. Để thực hành, bạn có thể sử dụng datetime để giữ đầu ra của NOW().

Ví dụ:

CREATE TABLE Orders 
(
    OrderId int NOT NULL, 
    ProductName varchar(50) NOT NULL, 
    OrderDate datetime NOT NULL DEFAULT NOW(), 
    PRIMARY KEY (OrderId) 
) 

Bạn có thể đọc thêm tại w3schools.

Các vấn đề liên quan