উত্তর:
আমি বিশ্বাস করি আপনি ব্যবহার করতে পারেন
CREATE TABLE test (
id INTEGER PRIMARY KEY AUTOINCREMENT,
t TIMESTAMP
DEFAULT CURRENT_TIMESTAMP
);
সংস্করণ হিসাবে 3.1 ( উত্স )
ডা। সাম্প্রতিক তালিকার পোস্টে হিপ্প:
CREATE TABLE whatever(
....
timestamp DATE DEFAULT (datetime('now','localtime')),
...
);
CURRENT_TIMESTAMP
তাই আমি মহাকাশ থেকে মাইক্রোসেকেন্ডের সংখ্যা ফিরিয়ে আনার জন্য সিতে নিজস্ব ফাংশন তৈরি করেছি এবং আমি DEFAULT
এখনই এটি ব্যবহার করতে পারায় আমি আনন্দিত ।
এটি কেবল একটি বাক্য গঠন ত্রুটি, আপনার প্রথম বন্ধনী প্রয়োজন: (DATETIME('now'))
আপনি যদি ডকুমেন্টেশনের দিকে লক্ষ্য করেন , আপনি সিন্থেক্সে 'এক্সপ্রেস' বিকল্পের চারপাশে যুক্ত করা প্রথম বন্ধনীটি নোট করুন।
এটি প্রশ্নের উত্তর এবং উত্তরগুলির ভিত্তিতে একটি সম্পূর্ণ উদাহরণ। উদাহরণস্বরূপ টাইমস্ট্যাম্প ( created_at
-ক্যালোমাম) ইউনিক্স যুগের ইউটিসি টাইমজোন হিসাবে সংরক্ষণ করা হয় এবং যখন প্রয়োজন হয় কেবল তখনই স্থানীয় সময় অঞ্চলে রূপান্তরিত হয়।
ইউনিক্স ইওপ ব্যবহার করে স্টোরেজ স্পেস সাশ্রয় হয় - 4 বাইট ইন্টিজার বনাম 24 বাইট স্ট্রিং যখন আইএসও 8601 স্ট্রিং হিসাবে সঞ্চিত থাকে তখন ডেটাটাইপগুলি দেখুন । 4 বাইট যদি পর্যাপ্ত না হয় তবে 6 বা 8 বাইটে বাড়ানো যেতে পারে।
ইউটিসি টাইমজোনে টাইমস্ট্যাম্প সংরক্ষণ করা একাধিক টাইমজোনগুলিতে যুক্তিসঙ্গত মান প্রদর্শন করা সুবিধাজনক করে তোলে।
এসকিউএলাইট সংস্করণটি 3.8.6 যা উবুন্টু এলটিএস 14.04 এর সাথে চালিত হয়।
$ sqlite3 so.db
SQLite version 3.8.6 2014-08-15 11:46:33
Enter ".help" for usage hints.
sqlite> .headers on
create table if not exists example (
id integer primary key autoincrement
,data text not null unique
,created_at integer(4) not null default (strftime('%s','now'))
);
insert into example(data) values
('foo')
,('bar')
;
select
id
,data
,created_at as epoch
,datetime(created_at, 'unixepoch') as utc
,datetime(created_at, 'unixepoch', 'localtime') as localtime
from example
order by id
;
id|data|epoch |utc |localtime
1 |foo |1412097842|2014-09-30 17:24:02|2014-09-30 20:24:02
2 |bar |1412097842|2014-09-30 17:24:02|2014-09-30 20:24:02
জিজ্ঞাসার মুহুর্তে আমি ইউটিসি + ২ ডিএসটিতে থাকায় স্থানীয় সময় সঠিক Local
স্টোরেজ স্পেস সংরক্ষণ করতে রিয়েল টাইপ ব্যবহার করা আরও ভাল।
এসকিউএল সংস্করণ 3-তে ডেটাটাইপসের 1.2 বিভাগ থেকে উদ্ধৃতি
এসকিউএলাইটের তারিখ এবং / অথবা সময়গুলি সংরক্ষণের জন্য আলাদা আলাদা কোনও স্টোরেজ ক্লাস নেই। পরিবর্তে, এসকিউএলাইটের অন্তর্নির্মিত তারিখ এবং সময় ফাংশনগুলি পাঠ্য, বাস্তব বা মানক মান হিসাবে তারিখ এবং সময় সংরক্ষণ করতে সক্ষম
CREATE TABLE test (
id INTEGER PRIMARY KEY AUTOINCREMENT,
t REAL DEFAULT (datetime('now', 'localtime'))
);
দেখতে কলাম-বাধ্যতা ।
আর ঢোকান কোনো মান প্রদান না করেই একটি সারিতে।
INSERT INTO "test" DEFAULT VALUES;
integer(n)
যেখানে কেউ উপযুক্ত মানটি বেছে নিতে পারে n
।
এটি সিনট্যাক্স ত্রুটি কারণ আপনি প্রথম বন্ধনী লিখেন নি
আপনি যদি লিখুন
ডেটটাইম নির্বাচন করুন ('এখন') তারপরে এটি আপনাকে যথাসময়ে সময় দেবে তবে আপনি যদি এই লেখার জন্য কোয়েরি করেন তবে আপনাকে অবশ্যই ইউটিসি সময়ের জন্য (ডেটটাইম ('এখন')) এর আগে প্রথম বন্ধনী যুক্ত করতে হবে। স্থানীয় সময়ের জন্য একই প্রশ্নের জন্য ডেটটাইম ('এখন', 'স্থানীয় সময়') নির্বাচন করুন
(DATETIME ( 'এখন', 'স্থানীয়সময়'))
এই বিকল্প উদাহরণটি 20 বাইটগুলি সংরক্ষণ করার জন্য স্থানীয় সময়কে পূর্ণসংখ্যা হিসাবে সঞ্চয় করে। কাজটি ফিল্ড ডিফল্ট, আপডেট-ট্রিগার এবং দেখুন-এ করা হয়। স্ট্রফটাইম অবশ্যই '% s' (একক উদ্ধৃতি) ব্যবহার করবে কারণ "% s" (ডাবল-কোট) আমার উপর 'কনস্ট্যান্ট নয়' ত্রুটি ফেলেছে।
Create Table Demo (
idDemo Integer Not Null Primary Key AutoIncrement
,DemoValue Text Not Null Unique
,DatTimIns Integer(4) Not Null Default (strftime('%s', DateTime('Now', 'localtime'))) -- get Now/UTC, convert to local, convert to string/Unix Time, store as Integer(4)
,DatTimUpd Integer(4) Null
);
Create Trigger trgDemoUpd After Update On Demo Begin
Update Demo Set
DatTimUpd = strftime('%s', DateTime('Now', 'localtime')) -- same as DatTimIns
Where idDemo = new.idDemo;
End;
Create View If Not Exists vewDemo As Select -- convert Unix-Times to DateTimes so not every single query needs to do so
idDemo
,DemoValue
,DateTime(DatTimIns, 'unixepoch') As DatTimIns -- convert Integer(4) (treating it as Unix-Time)
,DateTime(DatTimUpd, 'unixepoch') As DatTimUpd -- to YYYY-MM-DD HH:MM:SS
From Demo;
Insert Into Demo (DemoValue) Values ('One'); -- activate the field Default
-- WAIT a few seconds --
Insert Into Demo (DemoValue) Values ('Two'); -- same thing but with
Insert Into Demo (DemoValue) Values ('Thr'); -- later time values
Update Demo Set DemoValue = DemoValue || ' Upd' Where idDemo = 1; -- activate the Update-trigger
Select * From Demo; -- display raw audit values
idDemo DemoValue DatTimIns DatTimUpd
------ --------- ---------- ----------
1 One Upd 1560024902 1560024944
2 Two 1560024944
3 Thr 1560024944
Select * From vewDemo; -- display automatic audit values
idDemo DemoValue DatTimIns DatTimUpd
------ --------- ------------------- -------------------
1 One Upd 2019-06-08 20:15:02 2019-06-08 20:15:44
2 Two 2019-06-08 20:15:44
3 Thr 2019-06-08 20:15:44