Vô hiệu hóa mysql khi cập nhật current_timestamp

MySQL là một RDBMS dễ sử dụng. Nhiều tổ chức thích sử dụng nó vì khả năng bảo trì dễ dàng, dễ dàng chuẩn bị các lược đồ, thủ tục được lưu trữ, trình kích hoạt và bảo trì cơ sở dữ liệu. Trong bài viết này, chúng ta hãy xem cách cập nhật Dấu thời gian hiện tại trong MySQL

Bước 1. Tạo cơ sở dữ liệu

Đầu tiên chúng ta tạo cơ sở dữ liệu. Ở đây GEEKSFORGEEKS là tên db

Truy vấn

CREATE DATABASE GEEKSFORGEEKS;

Bước 2. Làm cho cơ sở dữ liệu hoạt động

Truy vấn

USE GEEKSFORGEEKS;

Bước 3. Tạo một nhân viên bảng với trường empLoginTime dưới dạng Dấu thời gian

Truy vấn

CREATE TABLE employee
   (
       empId int NOT NULL,
       empName VARCHAR(20),
       empLoginTime TIMESTAMP
   );

đầu ra

Vô hiệu hóa mysql khi cập nhật current_timestamp

Bước 4. Chúng ta có thể đặt múi giờ như sau

Truy vấn

SET TIME_ZONE = '+00:00';

Nếu chúng tôi muốn thay đổi Múi giờ, điều đó cũng có thể được thực hiện

Bước 5. Bây giờ, chúng ta hãy chèn các bản ghi

Truy vấn

INSERT INTO employee
    (
        empId, empName, empLoginTime
    )
VALUES
    (1, 'XXX', '2021-01-01 00:00:01'),
    (2, 'YYY', '2021-01-01 00:00:01'),
    (3, 'ZZZ', '2021-01-01 00:00:01'),
    (4, 'XYZ', '2021-01-01 00:00:01');

Bước 6. Hiển thị các bản ghi

Truy vấn

SELECT * FROM employee;

đầu ra

Vô hiệu hóa mysql khi cập nhật current_timestamp

Ở đây, cột ”empLoginTime” cho biết giá trị trong mẫu múi giờ được đề cập

Bước 7. Có khả năng xem dữ liệu từ các múi giờ khác nhau. Trong những khoảng thời gian đó, chúng ta có thể đặt múi giờ theo ý muốn

Truy vấn

SET time_zone ='+03:00';
SELECT * FROM employee;

đầu ra

Vô hiệu hóa mysql khi cập nhật current_timestamp

Trong MySQL, có một cơ sở để giữ giá trị dấu thời gian hiện tại mặc định cho một cột. tôi. e. empLoginTime sẽ tự động lấy giá trị dấu thời gian bất cứ khi nào nhân viên đăng nhập vào hệ thống. Nó tương đương với việc cập nhật cột thành giá trị dấu thời gian hiện tại

Truy vấn

ALTER TABLE employee MODIFY 
COLUMN empLoginTime 
TIMESTAMP DEFAULT CURRENT_TIMESTAMP
ON UPDATE CURRENT_TIMESTAMP;    

Hãy để chúng tôi kiểm tra cấu trúc của bảng bây giờ

Truy vấn

________số 8

Vô hiệu hóa mysql khi cập nhật current_timestamp

Lợi thế của việc cập nhật current_timestamp

Với cả DEFAULT CURRENT_TIMESTAMP và ON UPDATE CURRENT_TIMESTAMP, cột “empLoginTime” có dấu thời gian hiện tại cho giá trị mặc định của nó và được tự động cập nhật thành dấu thời gian hiện tại

Bây giờ chúng ta hãy chèn các bản ghi vào bảng. Vì chúng tôi có current_timestamp mặc định và cũng cập nhật lên current_timestamp, nên chúng tôi không cần cung cấp các giá trị cho 'empLoginTime'. Dưới đây là truy vấn để làm điều đó

Truy vấn

**Since empLoginTime has the current 
timestamp value, we no need to add the value
 explicitly to that column**
INSERT INTO employee (empId, empName) VALUES
(5, 'ABC'),(6,'CDE');

Hiển thị các bản ghi

Truy vấn

SELECT * FROM employee;

Vô hiệu hóa mysql khi cập nhật current_timestamp

Luôn luôn tốt hơn nếu có các cột 'đăng nhập' và 'đăng xuất' cũng như các loại cột tương tự để có các giá trị current_timestamp mặc định. Nếu nó không được đặt, chúng tôi có thể cập nhật các giá trị cột một cách dễ dàng.  

Trong bàn làm việc của MySQL, chúng ta phải làm như sau

Các bước cập nhật dữ liệu

  • Điều hướng đến Chỉnh sửa -> Tùy chọn
  • Sau đó nhấp vào tab “SQL Editor” và bỏ chọn hộp kiểm “Safe Updates”
  • Sau đó bấm vào Truy vấn -> Kết nối lại với máy chủ

Bây giờ thực hiện truy vấn SQL của bạn

Truy vấn

USE GEEKSFORGEEKS;
1

Hiển thị các bản ghi

Truy vấn

SELECT * FROM employee;

Vô hiệu hóa mysql khi cập nhật current_timestamp

Thông thường, chúng ta nên có “thời gian được tạo” và “thời gian được sửa đổi” trong một bảng để có các giá trị được cập nhật. Điều đó sẽ giúp cho mục đích kiểm toán. Ràng buộc mặc định rất hữu ích để đặt giá trị dấu thời gian hiện tại. Trong quá trình tạo bảng, giá trị mặc định có thể được đặt hoặc nếu không, bằng cách sử dụng lệnh ALTER  , chúng ta có thể đặt giới hạn mặc định. Một cách khác là sử dụng lệnh 'UPDATE' và được thấy trong ví dụ trên

Theo mặc định, trường DẤU THỜI GIAN trong bảng MySQL sẽ tự động cập nhật thành dấu thời gian hiện tại nếu bất kỳ trường nào khác trong hàng thay đổi. Điều này cực kỳ hữu ích cho các trường hợp bạn muốn theo dõi các thay đổi, chẳng hạn như đối với hệ thống ajax muốn tìm nạp bất kỳ thay đổi nào đã xảy ra kể từ lần cuối cùng "đăng ký". Điều này có thể dễ dàng chứng minh bằng cách chạy các lệnh sau trong cơ sở dữ liệu MySQL

USE GEEKSFORGEEKS;
3

Bây giờ nếu chúng ta chọn mọi thứ từ bảng, bạn sẽ thấy một cái gì đó như bên dưới (với dấu thời gian khác)

USE GEEKSFORGEEKS;
4

Bây giờ nếu chúng tôi cập nhật một hàng trong bảng, bạn sẽ thấy rằng dấu thời gian cũng được cập nhật

USE GEEKSFORGEEKS;
5

Đây có thể là một tác động không mong muốn nếu bạn chỉ muốn lưu dấu thời gian cho một sự kiện đã xảy ra thay vì theo dõi các thay đổi liên tiếp. Nếu đây là trường hợp, bạn phải xác định rõ ràng dấu thời gian mỗi khi bạn thực hiện thay đổi đối với hàng. Ngoài ra, nếu bạn muốn dấu thời gian không bao giờ tự động cập nhật, bạn có thể chỉ định

USE GEEKSFORGEEKS;
6 cho dấu thời gian khi tạo bảng, sau đó
USE GEEKSFORGEEKS;
7 sẽ không bao giờ kích hoạt. Khi giá trị mặc định không được chỉ định (và do đó,
USE GEEKSFORGEEKS;
7 được đặt thành
USE GEEKSFORGEEKS;
9), việc đặt giá trị của dấu thời gian thành một giá trị theo cách thủ công sẽ không ngăn các bản cập nhật trong tương lai thay đổi giá trị thành dấu thời gian hiện tại

Cảnh báo - Mặc định rõ ràng

Khi cài đặt MySQL trên Debian 7, tệp

CREATE TABLE employee
   (
       empId int NOT NULL,
       empName VARCHAR(20),
       empLoginTime TIMESTAMP
   );
0 chỉ định
CREATE TABLE employee
   (
       empId int NOT NULL,
       empName VARCHAR(20),
       empLoginTime TIMESTAMP
   );
1 "phá vỡ" hành vi mặc định ở trên và sẽ dẫn đến dấu thời gian không mặc định thành dấu thời gian hiện tại khi chèn hoặc cập nhật. Tuy nhiên, Ubuntu 14. 04 mà tôi đang sử dụng cho hướng dẫn này thì không. Theo nguyên tắc thông thường, tốt nhất là bạn nên viết thật rõ ràng và đảm bảo chỉ định
CREATE TABLE employee
   (
       empId int NOT NULL,
       empName VARCHAR(20),
       empLoginTime TIMESTAMP
   );
2 khi tạo cột dấu thời gian. Bằng cách đó, mã của bạn sẽ hoạt động trên các cơ sở dữ liệu mà không cần phải nhớ kiểm tra cấu hình máy chủ

Bản cập nhật CURRENT_TIMESTAMP trong MySQL có gì?

Tìm hiểu MySQL từ đầu về Khoa học dữ liệu và Phân tích . Bạn có thể xóa BẬT CẬP NHẬT CURRENT_TIMESTAMP khỏi một cột bằng lệnh ALTER. an update without an explicit timestamp would result in an update to the current timestamp value. You can remove ON UPDATE CURRENT_TIMESTAMP from a column using ALTER command.

Làm cách nào để đặt dấu thời gian hiện tại mặc định trong MySQL?

Giá trị mặc định phụ thuộc vào việc mệnh đề DEFAULT chỉ định CURRENT_TIMESTAMP hay một giá trị không đổi. Với CURRENT_TIMESTAMP , mặc định là dấu thời gian hiện tại. TẠO BẢNG t1 ( ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP, dt DATETIME DEFAULT CURRENT_TIMESTAMP ); Với hằng số, giá trị mặc định là giá trị đã cho.

Làm cách nào tôi chỉ có thể lấy ngày từ dấu thời gian?

Một cách khác mà bạn có thể trích xuất các giá trị ngày từ một dấu thời gian cụ thể là thông qua sử dụng “. ” toán tử theo sau là từ khóa “DATE” . Với phương pháp này, bạn có thể thực hiện dấu thời gian chuyển đổi Postgres cụ thể thành ngày hoặc chuyển đổi dấu thời gian hiện tại (sử dụng hàm now()) thành ngày.

MySQL có hỗ trợ dấu thời gian không?

MySQL truy xuất và hiển thị các 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ờ. DẤU THỜI GIAN có phạm vi '1970-01-01 00. 00. 01' UTC đến '2038-01-19 03. 14. 07' UTC.