Əsas səhifə > MySQL > TIMESTAMP data type

TIMESTAMP data type

TIMESTAMP columnlar-ı da DATETİME kimi görsədilir.Yəni ki 19 simvol uzunluğu var və “YYYY-MM-DD HH:MM:SS” formatındadır.

Lakin DATETİME-dan fərqli olaraq bir çox əhəmiyyətli xüsusiyyətləri vardır ki, indi onlar haqqında danışacıq.
Qısa olaraq desək auto-initialization və auto-update xüsusiyyətləri.Bu əsasən LOG table-larda gördüyümüz bir şeydir.Tapşırıqlar şəklində yazaq:
1)
Bizə lazımdır ki, TIME_LOG1 cədvəli ona daxil edilən hər məlumatın daxil edildiyi vaxtı qeydə alsın. (auto-initialization)
Bunun üçün DEFAULT CURRENT_TIMESTAMP -dən istifadə edəcik.

CREATE TABLE TIME_LOG1(
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
name VARCHAR(10)
);

Və davamı ilə insert versək:

INSERT INTO time_log1(name) VALUES('Orxan');

…müəyyən vaxtdan sonra ikinci insert:

INSERT INTO time_log1(name) VALUES('Ehmed');

İndi isə nəticəyə baxaq:

SELECT *
FROM time_log1;

blog_picture1

2)
Bizə lazımdır ki, time_log2 cədvəli yalnız edilmiş dəyişikliklərin vaxtını qeyd etsin. (auto-update)
Bunun üçün biz ON UPDATE CURRENT_TIMESTAMP-dən istifadə edəcik

CREATE TABLE time_log2(
update_time TIMESTAMP DEFAULT 0 ON UPDATE CURRENT_TIMESTAMP,
name VARCHAR(10)
);

insert verək:

INSERT INTO time_log2(name) VALUES('Samed');

daha sonra:

SELECT *
FROM time_log2;

blog_picture2

Gördüyümüz kimi bu zaman initiliozation vaxtı qeydə alınmır.
Lakin update verdikdə bu qeydə alınır(yəni dəyişiklik edildikdə)

UPDATE time_log2 SET name='Rafiq';

blog_picture3

3)
Lakin daha məntiqli belə olardı ki, bir column initiliozation-u digəri isə update-i qeyd etsin.(auto-initiliozation and auto-update)

CREATE TABLE time_log3(
create_time TIMESTAMP DEFAULT 0,
update_time TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
name VARCHAR(10)
);
INSERT INTO time_log3(create_time,name) VALUES(NULL,'Shahriyar');

blog_picture4

UPDATE time_log3 SET name='Xetai';

blog_picture5

Bundan əlavə onu demək lazımdır ki, TİMESTAMP column default olaraq:
NOT NULL və DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP-dir.
Yəni ki,

CREATE TABLE test1(
ts TIMESTAMP,
name VARCHAR(25)
);

CREATE TABLE test1 (
ts TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
name VARCHAR(25) NULL DEFAULT NULL
);

ikisi də eyni şeydir.
Əgər istəsək TİMESTAMP column null qəbul etsin onda explicit olaraq bunu qeyd etməliyik:

CREATE TABLE ts_null(
ts1 TIMESTAMP NULL,
name VARCHAR(25)
);
INSERT INTO ts_null(name) VALUES('Reshad');
SELECT * FROM ts_null;

blog_picture6

DEFAULT 0 kimi definition-lar ola bilsin ki işləməsin.
Bunun səbəbi NO_ZERO_DATE SQL mode-un aktiv olunmasıdır. Bu mode TRADİTİONAL SQL mode-un daxilində default olaraq gəlir.
NO_ZERO_DATE SQL mode-u 0, ‘0000-00-00′,’0000-00-00 00:00:00’ kimi məlumatları qəbul etmir.
Məsələn,

set @@global.sql_mode=traditional; 
CREATE TABLE ts_2(
ts TIMESTAMP DEFAULT 0,
name VARCHAR(25)
);

blog_picture7

SQL mode-lar haqqında ətraflı məlumat MySQL-də SQL_MODE əhəmiyyəti

TIMESTAMP və DATETİME haqqında isə.
1. The DATE, DATETIME, and TIMESTAMP Types
2. TIMESTAMP Properties

Kateqoriyalar: MySQL Etiketlər: , , , ,
  1. Hələlik heç bir şərh yoxdur
  1. No trackbacks yet.

Bir cavab yazın

Sistemə daxil olmaq üçün məlumatlarınızı daxil edin və ya ikonlardan birinə tıklayın:

WordPress.com Loqosu

WordPress.com hesabınızdan istifadə edərək şərh edirsinz. Çıxış / Dəyişdir )

Twitter rəsmi

Twitter hesabınızdan istifadə edərək şərh edirsinz. Çıxış / Dəyişdir )

Facebook fotosu

Facebook hesabınızdan istifadə edərək şərh edirsinz. Çıxış / Dəyişdir )

Google+ foto

Google+ hesabınızdan istifadə edərək şərh edirsinz. Çıxış / Dəyişdir )

%s qoşulma

%d bloqqer bunu bəyənir: