Giá trị mặc định cho TIMESTAMP trong MySQL là gì?

Ghi chú. Trong các phiên bản MySQL cũ hơn (trước 4. 1), các thuộc tính của kiểu dữ liệu

mysql> SET SESSION sql_mode=MAXDB;
7 khác biệt đáng kể theo nhiều cách so với những gì được mô tả trong phần này. Nếu bạn cần chuyển đổi dữ liệu
mysql> SET SESSION sql_mode=MAXDB;
7 cũ hơn để hoạt động với MySQL 5. 1, hãy nhớ xem MySQL 3. 23, 4. 0, 4. 1 Hướng dẫn tham khảo để biết chi tiết

mysql> SET SESSION sql_mode=MAXDB;
7 cột được hiển thị theo cùng định dạng như
mysql> SET SESSION sql_mode=MAXDB;
2 cột. Nói cách khác, chiều rộng hiển thị được cố định ở 19 ký tự và định dạng là
mysql> SET SESSION sql_mode=MAXDB;
3

Máy chủ MySQL cũng có thể được chạy với chế độ SQL

mysql> SET SESSION sql_mode=MAXDB;
4 được bật. Khi máy chủ chạy với chế độ này được bật,
mysql> SET SESSION sql_mode=MAXDB;
7 giống hệt với
mysql> SET SESSION sql_mode=MAXDB;
2. Nghĩa là, nếu chế độ này được bật vào thời điểm tạo bảng, thì
mysql> SET SESSION sql_mode=MAXDB;
7 cột sẽ được tạo dưới dạng cột
mysql> SET SESSION sql_mode=MAXDB;
2. Do đó, các cột như vậy sử dụng định dạng hiển thị
mysql> SET SESSION sql_mode=MAXDB;
2, có cùng phạm vi giá trị và không có khởi tạo hoặc cập nhật tự động cho ngày và giờ hiện tại

Để bật chế độ

mysql> SET SESSION sql_mode=MAXDB;
4, hãy đặt chế độ SQL của máy chủ thành
mysql> SET SESSION sql_mode=MAXDB;
4 khi khởi động bằng cách sử dụng tùy chọn máy chủ
CREATE TABLE t (ts TIMESTAMP);
CREATE TABLE t (ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP
                             ON UPDATE CURRENT_TIMESTAMP);
CREATE TABLE t (ts TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
                             DEFAULT CURRENT_TIMESTAMP);
2 hoặc bằng cách đặt biến
CREATE TABLE t (ts TIMESTAMP);
CREATE TABLE t (ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP
                             ON UPDATE CURRENT_TIMESTAMP);
CREATE TABLE t (ts TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
                             DEFAULT CURRENT_TIMESTAMP);
3 toàn cầu khi chạy

mysql> SET SESSION sql_mode=MAXDB;
0

Máy khách có thể khiến máy chủ chạy ở chế độ

mysql> SET SESSION sql_mode=MAXDB;
4 cho kết nối của chính nó như sau

mysql> SET SESSION sql_mode=MAXDB;

Lưu ý rằng thông tin trong cuộc thảo luận sau đây chỉ áp dụng cho các cột

mysql> SET SESSION sql_mode=MAXDB;
7 đối với các bảng không được tạo với chế độ
mysql> SET SESSION sql_mode=MAXDB;
4 được bật, bởi vì các cột đó được tạo dưới dạng cột
mysql> SET SESSION sql_mode=MAXDB;
2

MySQL không chấp nhận các giá trị dấu thời gian bao gồm số 0 trong cột ngày hoặc tháng hoặc các giá trị không phải là ngày hợp lệ. Ngoại lệ duy nhất cho quy tắc này là giá trị đặc biệt

CREATE TABLE t (ts TIMESTAMP);
CREATE TABLE t (ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP
                             ON UPDATE CURRENT_TIMESTAMP);
CREATE TABLE t (ts TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
                             DEFAULT CURRENT_TIMESTAMP);
8

Bạn có sự linh hoạt đáng kể trong việc xác định thời điểm khởi tạo và cập nhật

mysql> SET SESSION sql_mode=MAXDB;
7 tự động xảy ra và cột nào sẽ có những hành vi đó

  • Đối với một cột

    mysql> SET SESSION sql_mode=MAXDB;
    
    7 trong bảng, bạn có thể chỉ định dấu thời gian hiện tại làm giá trị mặc định và giá trị tự động cập nhật. Có thể đặt dấu thời gian hiện tại làm giá trị mặc định để khởi tạo cột, cho giá trị tự động cập nhật hoặc cả hai. Không thể để dấu thời gian hiện tại làm giá trị mặc định cho một cột và giá trị tự động cập nhật cho cột khác

  • Bạn có thể chỉ định cột

    mysql> SET SESSION sql_mode=MAXDB;
    
    7 nào sẽ tự động khởi tạo hoặc cập nhật ngày giờ hiện tại. Đây không cần phải là cột
    mysql> SET SESSION sql_mode=MAXDB;
    
    7 đầu tiên

Các quy tắc sau chi phối việc khởi tạo và cập nhật cột

mysql> SET SESSION sql_mode=MAXDB;
7

  • Nếu giá trị

    mysql> SET SESSION sql_mode=MAXDB;
    
    64 được chỉ định cho cột
    mysql> SET SESSION sql_mode=MAXDB;
    
    7 đầu tiên trong bảng, giá trị đó sẽ không bị bỏ qua. Giá trị mặc định có thể là
    mysql> SET SESSION sql_mode=MAXDB;
    
    66 hoặc giá trị ngày và giờ không đổi

  • mysql> SET SESSION sql_mode=MAXDB;
    
    67 giống như
    mysql> SET SESSION sql_mode=MAXDB;
    
    68 cho cột
    mysql> SET SESSION sql_mode=MAXDB;
    
    7 đầu tiên. Đối với bất kỳ cột
    mysql> SET SESSION sql_mode=MAXDB;
    
    7 nào khác,
    mysql> SET SESSION sql_mode=MAXDB;
    
    67 được coi là
    mysql> SET SESSION sql_mode=MAXDB;
    
    12

  • Bất kỳ cột

    mysql> SET SESSION sql_mode=MAXDB;
    
    7 đơn lẻ nào trong bảng đều có thể được sử dụng làm cột được khởi tạo cho dấu thời gian hiện tại hoặc được cập nhật tự động

  • Trong câu lệnh

    mysql> SET SESSION sql_mode=MAXDB;
    
    14, cột
    mysql> SET SESSION sql_mode=MAXDB;
    
    7 đầu tiên có thể được khai báo theo bất kỳ cách nào sau đây

    • Với cả hai mệnh đề

      mysql> SET SESSION sql_mode=MAXDB;
      
      68 và
      mysql> SET SESSION sql_mode=MAXDB;
      
      17, cột có dấu thời gian hiện tại cho giá trị mặc định của nó và được cập nhật tự động

    • Không có mệnh đề

      mysql> SET SESSION sql_mode=MAXDB;
      
      64 hay
      mysql> SET SESSION sql_mode=MAXDB;
      
      19, nó giống như
      mysql> SET SESSION sql_mode=MAXDB;
      
      70

    • Với mệnh đề

      mysql> SET SESSION sql_mode=MAXDB;
      
      68 và không có mệnh đề
      mysql> SET SESSION sql_mode=MAXDB;
      
      19, cột có dấu thời gian hiện tại cho giá trị mặc định nhưng không được cập nhật tự động

    • Không có mệnh đề

      mysql> SET SESSION sql_mode=MAXDB;
      
      64 và có mệnh đề
      mysql> SET SESSION sql_mode=MAXDB;
      
      17, cột có giá trị mặc định là 0 và được cập nhật tự động

    • Với giá trị

      mysql> SET SESSION sql_mode=MAXDB;
      
      64 không đổi, cột có giá trị mặc định đã cho. Nếu cột có mệnh đề
      mysql> SET SESSION sql_mode=MAXDB;
      
      17, nó sẽ tự động được cập nhật, nếu không thì không

    Nói cách khác, bạn có thể sử dụng dấu thời gian hiện tại cho cả giá trị ban đầu và giá trị tự động cập nhật hoặc một hoặc không. (Ví dụ: bạn có thể chỉ định

    mysql> SET SESSION sql_mode=MAXDB;
    
    19 để bật tự động cập nhật mà không cần tự động khởi tạo cột. )

  • Bất kỳ

    mysql> SET SESSION sql_mode=MAXDB;
    
    66,
    mysql> SET SESSION sql_mode=MAXDB;
    
    79 hoặc
    mysql> SET SESSION sql_mode=MAXDB;
    
    70 nào cũng có thể được sử dụng trong mệnh đề
    mysql> SET SESSION sql_mode=MAXDB;
    
    64 và
    mysql> SET SESSION sql_mode=MAXDB;
    
    19. Tất cả đều có nghĩa là “dấu thời gian hiện tại. ”

    Thứ tự của các thuộc tính

    mysql> SET SESSION sql_mode=MAXDB;
    
    64 và
    mysql> SET SESSION sql_mode=MAXDB;
    
    19 không quan trọng. Nếu cả
    mysql> SET SESSION sql_mode=MAXDB;
    
    64 và
    mysql> SET SESSION sql_mode=MAXDB;
    
    19 được chỉ định cho cột
    mysql> SET SESSION sql_mode=MAXDB;
    
    7, thì cột này có thể đứng trước cột kia. Ví dụ, những tuyên bố này là tương đương

    ________số 8
  • Để chỉ định mặc định tự động hoặc cập nhật cho cột

    mysql> SET SESSION sql_mode=MAXDB;
    
    7 khác với cột đầu tiên, bạn phải loại bỏ hành vi khởi tạo và cập nhật tự động cho cột
    mysql> SET SESSION sql_mode=MAXDB;
    
    7 đầu tiên bằng cách gán rõ ràng cho nó một giá trị
    mysql> SET SESSION sql_mode=MAXDB;
    
    64 không đổi (ví dụ:
    mysql> SET SESSION sql_mode=MAXDB;
    
    12 hoặc
    mysql> SET SESSION sql_mode=MAXDB;
    
    72). Sau đó, đối với cột
    mysql> SET SESSION sql_mode=MAXDB;
    
    7 khác, các quy tắc giống như đối với cột
    mysql> SET SESSION sql_mode=MAXDB;
    
    7 đầu tiên, ngoại trừ việc nếu bạn bỏ qua cả hai mệnh đề
    mysql> SET SESSION sql_mode=MAXDB;
    
    64 và
    mysql> SET SESSION sql_mode=MAXDB;
    
    19, thì sẽ không có quá trình khởi tạo hoặc cập nhật tự động xảy ra

    Ví dụ. Những tuyên bố này là tương đương

    mysql> SET SESSION sql_mode=MAXDB;
    
    6

Bạn có thể đặt múi giờ hiện tại trên cơ sở mỗi kết nối, như được mô tả trong Phần 5. 10. 8, “Hỗ trợ múi giờ của máy chủ MySQL”. Giá trị

mysql> SET SESSION sql_mode=MAXDB;
7 được lưu trữ trong UTC, được chuyển đổi từ múi giờ hiện tại để lưu trữ và được chuyển đổi trở lại múi giờ hiện tại khi truy xuất. Miễn là cài đặt múi giờ không đổi, bạn sẽ nhận lại cùng một giá trị mà bạn lưu trữ. Nếu bạn lưu trữ một giá trị
mysql> SET SESSION sql_mode=MAXDB;
7, sau đó thay đổi múi giờ và truy xuất giá trị, thì giá trị được truy xuất sẽ khác với giá trị bạn đã lưu trữ. Điều này xảy ra do cùng một múi giờ không được sử dụng để chuyển đổi theo cả hai hướng. Múi giờ hiện tại có sẵn dưới dạng giá trị của biến hệ thống
mysql> SET SESSION sql_mode=MAXDB;
79

Bạn có thể bao gồm thuộc tính

mysql> SET SESSION sql_mode=MAXDB;
70 trong định nghĩa của cột
mysql> SET SESSION sql_mode=MAXDB;
7 để cho phép cột chứa giá trị
mysql> SET SESSION sql_mode=MAXDB;
70. Ví dụ

mysql> SET SESSION sql_mode=MAXDB;
1

Nếu thuộc tính

mysql> SET SESSION sql_mode=MAXDB;
70 không được chỉ định, việc đặt cột thành
mysql> SET SESSION sql_mode=MAXDB;
70 sẽ đặt nó thành dấu thời gian hiện tại. Lưu ý rằng cột
mysql> SET SESSION sql_mode=MAXDB;
7 cho phép giá trị
mysql> SET SESSION sql_mode=MAXDB;
70 sẽ không lấy dấu thời gian hiện tại ngoại trừ một trong các điều kiện sau

  • Giá trị mặc định của nó được định nghĩa là

    mysql> SET SESSION sql_mode=MAXDB;
    
    66

  • mysql> SET SESSION sql_mode=MAXDB;
    
    70 hoặc
    mysql> SET SESSION sql_mode=MAXDB;
    
    66 được chèn vào cột

Nói cách khác, cột

mysql> SET SESSION sql_mode=MAXDB;
7 được định nghĩa là
mysql> SET SESSION sql_mode=MAXDB;
70 sẽ chỉ tự động cập nhật nếu nó được tạo bằng cách sử dụng định nghĩa như sau

mysql> SET SESSION sql_mode=MAXDB;
7

Mặt khác - nghĩa là, nếu cột

mysql> SET SESSION sql_mode=MAXDB;
7 được xác định để cho phép các giá trị
mysql> SET SESSION sql_mode=MAXDB;
70 nhưng không sử dụng
mysql> SET SESSION sql_mode=MAXDB;
74, như được hiển thị ở đây…

Định dạng thời gian mặc định cho MySQL là gì?

MySQL truy xuất và hiển thị giá trị DATETIME trong ' YYYY-MM-DD hh. mm. định dạng ss '. Phạm vi được hỗ trợ là '1000-01-01 00. 00. 00' đến '9999-12-31 23. 59. 59'. Kiểu dữ liệu DẤU THỜI GIAN được sử dụng cho các giá trị chứa cả phần ngày và giờ.

Giá trị mặc định cho ngày trong MySQL là gì?

Đối với các loại số, giá trị mặc định là 0, ngoại trừ các loại số nguyên hoặc số dấu phẩy động được khai báo bằng thuộc tính AUTO_INCREMENT, giá trị mặc định là giá trị tiếp theo trong chuỗi. Đối với các loại ngày và giờ không phải là DẤU THỜI GIAN , giá trị mặc định là giá trị “không” thích hợp cho loại .

Làm cách nào để đặt TIMESTAMP trong MySQL?

Để chứng minh, trước tiên hãy tạo một bảng có tên là Mẫu với sample_ts là trường DẤU THỜI GIAN. TẠO BẢNG Mẫu ( sample_id int NOT NULL, sample_name VARCHAR(20), sample_ts DẤU THỜI GIAN ); . 00' UTC bằng cách ban hành lệnh SET time_zone. SET TIME_ZONE = '+00. 00';

TIMESTAMP hiện tại trong MySQL là gì?

Hàm CURRENT_TIMESTAMP() trả về ngày giờ hiện tại. Ghi chú. Ngày và giờ được trả về dưới dạng "YYYY-MM-DD HH-MM-SS" (chuỗi) hoặc dưới dạng YYYYMMDDHHMMSS. uuuuuu (số)