මම MySQL හි දිවා කාලය හෝ කාලරාමු දත්ත වර්ගය භාවිතා කළ යුතුද?


2689

දිවා කාල වේලාවක් හෝ කාලරාමු ක්ෂේත්‍රයක් භාවිතා කිරීමට ඔබ නිර්දේශ කරනවාද ? (MySQL භාවිතා කිරීම) ඇයි?

මම සේවාදායක පැත්තේ PHP සමඟ වැඩ කරමි.


1
මෙයට අදාළ තොරතුරු කිහිපයක් ඇත codeproject.com/Tips/1215635/MySQL-DATETIME-vs-TIMESTAMP
වක්ලේ

ඔබේ අයදුම්පත 2038 පෙබරවාරි මාසයේදී බිඳ දැමීමට ඔබට අවශ්‍ය නම්, කාලරාමුව භාවිතා කරන්න. දින පරාසය පරීක්ෂා කරන්න.
විල්සන් හෝක්

Answers:


1831

MySQL හි කාලරාමු සාමාන්‍යයෙන් වාර්තා වල වෙනස්කම් නිරීක්ෂණය කිරීමට භාවිතා කරන අතර බොහෝ විට වාර්තාව වෙනස් වන සෑම විටම යාවත්කාලීන වේ. ඔබට නිශ්චිත අගයක් ගබඩා කිරීමට අවශ්‍ය නම් ඔබ දිවා කාලයේ ක්ෂේත්‍රයක් භාවිතා කළ යුතුය.

ඔබ අදහස් කළේ යුනික්ස් කාලරාමුව හෝ ස්වදේශික MySQL දිවා කාල ක්ෂේත්‍රය භාවිතා කිරීම අතර තීරණය කිරීමට ඔබට අවශ්‍ය නම්, ස්වදේශීය ආකෘතිය සමඟ යන්න. ඔබට MySQL තුළ ඒ ආකාරයෙන් ගණනය කිරීම් කළ හැකි ("SELECT DATE_ADD(my_datetime, INTERVAL 1 DAY)")අතර ("SELECT UNIX_TIMESTAMP(my_datetime)")ඔබට PHP සමඟ ක්‍රියාත්මක වීමට අවශ්‍ය නම් වාර්තාව විමසන විට වටිනාකමෙහි ආකෘතිය යුනික්ස් කාලරාමුවකට වෙනස් කිරීම සරල ය .


981
වැදගත් වෙනසක් වන්නේ DATETIMEදිනයක් (කැලැන්ඩරයක දැක්වෙන පරිදි) සහ වේලාවක් (බිත්ති ඔරලෝසුවක නිරීක්ෂණය කළ හැකි පරිදි) TIMESTAMPනියෝජනය කරන අතර කාලය තුළ මනාව අර්ථ දක්වා ඇති ලක්ෂ්‍යයක් නියෝජනය කිරීමයි. ඔබගේ යෙදුම කාල කලාප හසුරුවන්නේ නම් මෙය ඉතා වැදගත් වේ. '2010-09-01 16:31:00' කොපමණ කලකට පෙරද? එය රඳා පවතින්නේ ඔබ සිටින කාල කලාපය මතය. මට නම් එය තත්පර කිහිපයකට පෙර විය, ඔබට එය අනාගතයේ කාලයක් නියෝජනය කළ හැකිය. '1970-01-01 00:00:00 UTC' සිට තත්පර 1283351460 ක් මම පැවසුවහොත්, මා කතා කරන වේලාව කුමක්දැයි ඔබ හරියටම දන්නවා. (නිර්ගේ විශිෂ්ට පිළිතුර පහතින් බලන්න). [අවාසිය: වලංගු පරාසය].
මැට්බියන්කෝ

121
තවත් එක් වෙනසක්: "ස්වදේශීය" දිවා කාලය සමඟ විමසුම් හැඹිලි නොවනු ඇත, නමුත් කාලරාමුව සමඟ විමසුම් - වනු ඇත.
OZ_

39
"MySQL හි කාලරාමු සාමාන්‍යයෙන් වාර්තා වල වෙනස්කම් නිරීක්ෂණය කිරීමට භාවිතා කරයි" එය හොඳ පිළිතුරක් යැයි නොසිතන්න. මැට්බියන්කෝ සහ නිර් පවසන පරිදි කාලරාමුව ඊට වඩා බලවත් හා සංකීර්ණ ය. කෙසේ වෙතත්, පිළිතුරේ දෙවන කොටස ඉතා හොඳයි. බ්ලයිවට් පැවසූ දෙය සත්‍යයක් වන අතර එය හොඳ අවවාදයකි.
santiagobasulto

10
වැදගත් සටහන 1 ක් වන DATETIME සහ TIMESTAMP හට CURRENT_TIMESTAMP භාවිතා කළ හැකිය, දැන් () එහි පෙරනිමි අගය ලෙස ගෞරවාන්විතව භාවිතා කළ හැකිය, නමුත් DATE උදාහරණයක් ලෙස එය කළ නොහැක, මන්ද එය පෙරනිමියෙන් '0000-00-00' භාවිතා කරයි, එබැවින් එය විසඳීමට U ලිවිය යුතුය DATE mysql වර්ගය සමඟ ක්ෂේත්‍රයේ / කොලෙහි වත්මන් දිනය (කාලය නොමැතිව) ඇතුළත් කිරීමට ඔබේම ප්‍රේරකය එම වගුවට.
ආතර් කුෂ්මන්

14
Av ඩේවිඩ් හාර්ක්නස්: ප්‍රලේඛනය පවසන්නේ “ස්වයංක්‍රීය ගුණාංග නියම කිරීමට, DEFAULT CURRENT_TIMESTAMP සහ UPDATE CURRENT_TIMESTAMP වගන්ති භාවිතා කරන්න” dev.mysql.com/doc/refman/5.0/en/timestamp-initialization.html
ප්ලේප්

917

MySQL 5 සහ ඊට ඉහළින්, TIMESTAMP අගයන් ගබඩා කිරීම සඳහා වත්මන් කාල කලාපයේ සිට UTC බවට පරිවර්තනය කර නැවත ලබා ගැනීම සඳහා UTC වෙතින් වත්මන් කාල කලාපයට පරිවර්තනය කරනු ලැබේ. (මෙය සිදුවන්නේ TIMESTAMP දත්ත වර්ගය සඳහා මිස DATETIME වැනි වෙනත් වර්ග සඳහා නොවේ .)

පෙරනිමියෙන්, එක් එක් සම්බන්ධතාවය සඳහා වත්මන් කාල කලාපය සේවාදායකයාගේ කාලය වේ. MySQL සේවාදායක කාල කලාප සහයෙහි විස්තර කර ඇති පරිදි කාල කලාපය එක් එක් සම්බන්ධතාවය අනුව සැකසිය හැකිය .


11
මෙම OReilly ඉදිරිපත් කිරීම මෙම මාතෘකාවට ඉතා හොඳයි (PDF සමාවෙන්න) cdn.oreillystatic.com/en/assets/1/event/36/…
gcb

13
එය සිදුවීමේ ස්වභාවය ගැන ද: - වීඩියෝ සම්මන්ත්‍රණයක් (TIMESTAMP). සියළුම සේවකයින් එහි කාල කලාපයට ගැලපෙන නිරපේක්ෂ ක්ෂණික මොහොතක් පිළිබඳ සඳහනක් දැකිය යුතුය. - දේශීය කාර්ය වේලාවක් (DATETIME), මම මෙම කාර්යය කළ යුත්තේ 2014/03/31 9:00 AM එදින මම නිව් යෝර්ක් හෝ පැරීසියේ වැඩ කරන්නේ නම් කමක් නැත. මම එදින සිටින දේශීය වේලාවෙන් උදේ 8.00 ට වැඩ කිරීමට පටන් ගනිමි.
යූසර්

1
ඉතින් මම සේවාදායකයේ කාල කලාපය වෙනස් කළහොත් TIMESTAMP හි අගය එලෙසම පවතිනු ඇත්ද නැතහොත් එයද වෙනස් වේවිද ??
ඇන්ඩෲ

3
Nd ඇන්ඩ rew එය UTC බැවින් එය UTC ලෙස පවතිනු ඇත. කෙසේ වෙතත් පසුගාමී පරිවර්තනය "නව" සේවාදායක කාල කලාපයට වෙනස් වේ.
nembleton

ucyucer - මම ඒ ගැන සිතීම නිර්දේශ නොකරමි. ගෝලීය ආර්ථිකයක වඩාත්ම ස්ථාවර භාවිතය වන්නේ ගබඩා කිරීම සඳහා සියලු දත්ත වේලාවන් UTC බවට පරිවර්තනය කිරීමයි. සම්මුතිය අනුව, දිවා කාලය UTC ක්ෂේත්‍රයක් ලෙස සලකන්න. යූටීසී වෙත පරිවර්තනය කිරීම සඳහා දින වකවානු ඇතුලත් කරන සියලු කාර්යයන් සඳහා මෙය බරක් පැටවෙනු ඇත, නමුත් එය දිගුකාලීන පිරිසිදු සැලසුමකි. ඇත්ත වශයෙන්ම, පරිශීලකයාගේ වර්තමාන සැකසුම් මත පදනම්ව තොරතුරු ඉදිරිපත් කරන්න. පරිශීලකයා "පැරීසියේ 09:00" ඇතුලත් කිරීමට කැමති නම්, ඔවුන්ට පැරිස් වේලාව නියම කිරීමට ඉඩ දෙන්න, ඉන්පසු 09:00 ඇතුල් කරන්න. එවිට නිව්යෝර්ක් හි සිටින ඕනෑම කෙනෙකුට ඔවුන්ගේ වේලාවට අවදි විය යුතු වේලාව, දුරකථන
සන්නිවේදනය සඳහා

525

පේළි පාර-දත්ත (දිනය සාදන ලද හෝ වෙනස් කරන ලද) හැර වෙනත් ඕනෑම දෙයක් සඳහා මම සෑම විටම DATETIME ක්ෂේත්‍ර භාවිතා කරමි.

ලෙස සඳහන් වන MySQL ලියකියවිලි වල:

දිනය සහ වේලාව යන දෙකම අඩංගු අගයන් ඔබට අවශ්‍ය විට DATETIME වර්ගය භාවිතා වේ. MySQL විසින් DATETIME අගයන් 'YYYY-MM-DD HH: MM: SS' ආකෘතියෙන් ලබා ගනී. සහාය දක්වන පරාසය '1000-01-01 00:00:00' සිට '9999-12-31 23:59:59' වේ.

...

TIMESTAMP දත්ත වර්ගයට '1970-01-01 00:00:01' UTC සිට '2038-01-09 03:14:07' UTC පරාසයක් ඇත. MySQL අනුවාදය සහ සේවාදායකය ක්‍රියාත්මක වන SQL මාදිලිය මත පදනම්ව එයට විවිධ ගුණාංග ඇත.

සාමාන්‍ය භාවිතයේදී ඔබ TIMESTAMPs හි පහළ සීමාවට පැමිණීමට බොහෝ දුරට ඉඩ ඇත - උදා: උපන් දිනය ගබඩා කිරීම.


196
ඔබ බැංකු හෝ දේපල වෙළඳාම් වල යෙදී සිටින්නේ නම් ඔබට පහසුවෙන් ඉහළ සීමාවට පැමිණිය හැකිය ... අවුරුදු 30 ක උකස් කිරීම් දැන් 2038 ඉක්මවා යයි
Kip

16
ඇත්ත වශයෙන්ම, 64-බිට් යුනික්ස් කාලරාමු භාවිතා කරන්න. උදාහරණයක් ලෙස, ජාවා හි, new Date().getTime()දැනටමත් ඔබට බිට් 64 ක අගයක් ලබා දෙයි.
osa

5
DATETIME සඳහා +1: අපගේ දත්ත ප්‍රවාහයේදී, මිලදී ගැනීම සහ ඉන්වොයිසිය සඳහා භෞතික වෙළඳසැලේ SQL සේවාදායකයෙන්, වෙබ් පිටුවේ අතථ්‍ය වෙළඳසැල සඳහා MySQL සේවාදායකයට මාරු කරනු ලැබේ, මෙම දත්ත වර්ගය ගනුදෙනුවේ ද පවතින බැවින් වෙනස් කිරීමේ දිනය-වේලාව සඳහා DATETIME වඩා හොඳය. -SQL. නමුත් TIMESTAMP යනු Transact-SQL හි වෙනත් දෙයක්, එය ROWVERSION වැනි ද්විමය වේ, නමුත් MySQL TIMESTAMP ඩේටයිම් සමාන වේ. එබැවින් අපි ඩීබී දෙකේ අනුකූලතාව සඳහා ටයිමෙස්ටැම්ප් භාවිතය වළක්වා ගනිමු.
ජාකූ

10
අදහසක් නැත. එය MySQL වලට වඩා විශාල ගැටළුවක් වන අතර සරල විසඳුමක් නොමැත: en.wikipedia.org/wiki/Year_2038_problem කාලරාමු දැන් 64-බිට් බව ප්‍රකාශ කිරීමට MySQL හට හැකි බව මම විශ්වාස නොකරමි. ඔවුන් දෘඩාංග පාලනය නොකරයි.
scronide

5
මගේ උපන්දිනය දිනය ලෙස ඔබ උපන් වේලාව දන්නේ නම්, මා වෙනුවෙන් කරන පරිදි.
ක්‍රිස් ක්‍රේග්

322

TIMESTAMPවෙනස් නොවන time-zone to 'america/new_york'ස්ථානය වෙනස් කිරීමෙන් පසු දිනය වර්ගය අගයන් වෙනස් කළ ආකාරය පහත උදාහරණ වලින් දැක්වේ DATETIME.

mysql> show variables like '%time_zone%';
+------------------+---------------------+
| Variable_name    | Value               |
+------------------+---------------------+
| system_time_zone | India Standard Time |
| time_zone        | Asia/Calcutta       |
+------------------+---------------------+

mysql> create table datedemo(
    -> mydatetime datetime,
    -> mytimestamp timestamp
    -> );

mysql> insert into datedemo values ((now()),(now()));

mysql> select * from datedemo;
+---------------------+---------------------+
| mydatetime          | mytimestamp         |
+---------------------+---------------------+
| 2011-08-21 14:11:09 | 2011-08-21 14:11:09 |
+---------------------+---------------------+

mysql> set time_zone="america/new_york";

mysql> select * from datedemo;
+---------------------+---------------------+
| mydatetime          | mytimestamp         |
+---------------------+---------------------+
| 2011-08-21 14:11:09 | 2011-08-21 04:41:09 |
+---------------------+---------------------+

මම මගේ පිළිතුර ලිපියක් බවට පරිවර්තනය කර ඇති බැවින් වැඩි පිරිසකට මෙම ප්‍රයෝජනවත්, MySQL: Datetime Versus Timeestamp Data Types සොයා ගත හැකිය .


55
හොඳයි, ඇත්ත වශයෙන්ම DATETIMEtime ලදායී කාලය කාල කලාප වෙනස් වීමත් සමඟ වෙනස් විය, TIMESTAMPවෙනස් නොවූ නමුත් මානව නියෝජනය වෙනස් විය.
flindeberg

3
මෙම විධානය MySQL 5.6 හි ක්‍රියා නොකරන බව පෙනේ set time_zone="america/new_york";
මංජුනාත් රෙඩ්ඩි

නියම කළ කාල_ කලාප කලාපයේ පිළිතුර මෙන්න. stackoverflow.com/questions/3451847/mysql-timezone-change
රෙඩ්ඩි

2
Lflindeberg සමඟ එකඟ වන්න. කාලරාමුව නිරූපණය කරන්නේ කාල කලාප වෙනස් වීමෙන් පසු නිවැරදි වේලාව මිස දිවා කාලය නොවේ
නිටින් බන්සාල්

193

ප්‍රධාන වෙනස වන්නේ DATETIME නියත වන අතර TIMESTAMP time_zoneසැකසුම කෙරෙහි බලපායි .

එබැවින් එය වැදගත් වන්නේ කාල කලාප හරහා සමමුහුර්ත කළ පොකුරු ඔබ සතුව ඇති විට හෝ අනාගතයේ දී පමණි.

සරල වචන වලින් කිවහොත්: මට ඕස්ට්‍රේලියාවේ දත්ත සමුදායක් තිබේ නම් සහ ඇමරිකාවේ දත්ත සමුදායක් සමමුහුර්ත කිරීමට / ජනගහනය කිරීමට එම දත්ත ගබඩාවේ කුණු කූඩයක් ගන්නවා නම්, ටයිම්ස්ටැම්ප් නව කාල කලාපයේ සිදුවීමේ සැබෑ වේලාව පිළිබිඹු වන පරිදි යාවත්කාලීන කරනු ඇති අතර DATETIME අවු කාල කලාපයේ සිදුවීමේ වේලාව තවමත් පිළිබිඹු කරයි .

ෆේස්බුක් හි TIMESTAMP භාවිතා කළ යුතු තැන DATETIME භාවිතා කිරීම පිළිබඳ හොඳ උදාහරණයක් වේ, එහිදී ඔවුන්ගේ සේවාදායකයන්ට කාල කලාප හරහා සිදු වූයේ කුමක්දැයි නිශ්චිතවම විශ්වාස නැත. වරක් මා සංවාදයක යෙදී සිටියදී පණිවිඩය යැවීමට පෙර මම පණිවිඩවලට පිළිතුරු දෙන බව පැවසුවා. (ඇත්ත වශයෙන්ම, මෙය සමමුහුර්තකරණයට වඩා වේලාවන් පළ කරනු ලැබුවේ නම් පණිවුඩකරණ මෘදුකාංගයේ නරක කාල කලාප පරිවර්තනය නිසා ද මෙය සිදුවිය හැකිය.)


84
මම හිතන්නේ නැහැ මෙය හොඳ චින්තනයක් කියා. මම යූටීසී හි සියලුම දිනයන් ගබඩා කර සැකසීමට කටයුතු කර ඇති අතර ඉදිරිපස කෙළවර එය ලබා දී ඇති කාල කලාපයට අනුව ප්‍රදර්ශනය කිරීමට වග බලා ගන්නෙමි. මෙම ප්රවේශය සරල හා පුරෝකථනය කළ හැකිය.
කොස්

8
Os කොස්: UTC හි සියලුම දිනයන් ගබඩා කිරීම සහ සැකසීම හරියටම TIMESTAMP අභ්‍යන්තරව කරන්නේ කුමක්ද? (ඉන්පසු එය ඔබගේ දේශීය කාල කලාපය ප්‍රදර්ශනය කිරීම සඳහා පරිවර්තනය කරන්නේද?)
කාබොකේෂන්

10
මගේ ප්‍රාදේශීය කාල කලාපය? ඔබේ කාල කලාපය ඔබේ ඩීබී දැන ගන්නේ කෙසේද? ;-) සාමාන්‍යයෙන් දත්ත සමුදාය සහ පරිශීලක අතුරුමුහුණත අතර යම් සැකසුම් පවතී. මම ප්‍රාදේශීයකරණය කරන්නේ සම්පූර්ණ සැකසීමෙන් පසුව පමණි.
කොස්

3
Oz කොස්: ඔබේ දත්ත සමුදායේ කාල කලාපය මගේ දත්ත ගබඩාව නොදනී :! නමුත් එය කාලරාමුව දනී. ඔබේ දත්ත සමුදාය තමන්ගේම කාල කලාප සැකසුම දන්නා අතර කාලරාමුව අර්ථ නිරූපණය කිරීමේදී / නිරූපණය කිරීමේදී එය අදාළ වේ. 1:01 am 2013 දෙසැම්බර් 11 චීනයේ බීජිං හි ඕස්ට්‍රේලියාවේ සිඩ්නි නුවර 2013 දෙසැම්බර් 11 වන දින අළුයම 1:01 ට සමාන වේලාවක් නොවේ. ගූගල්: 'කාල කලාප' සහ 'ප්‍රයිම් මෙරිඩියන්'.
ekerner

2
MySQL විසින් ගබඩා කිරීම සඳහා TIMESTAMP අගයන් වත්මන් කාල කලාපයේ සිට UTC දක්වාද, නැවත ලබා ගැනීම සඳහා UTC සිට වත්මන් කාල කලාපයටද පරිවර්තනය කරයි. (DATETIME වැනි වෙනත් වර්ග සඳහා මෙය සිදු නොවේ.) Dev.mysql.com/doc/refman/5.5/en/datetime.html
Mahdyfo

125

මම මේ තීරණය ගන්නේ අර්ථකථන පදනමක් මතයි.

නියමිත වේලාවට (වැඩි හෝ අඩු) ස්ථාවර ස්ථානයක් සටහන් කිරීමට අවශ්‍ය විට මම කාලරාමුව භාවිතා කරමි. උදාහරණයක් ලෙස දත්ත ගබඩාවට වාර්තාවක් ඇතුළත් කළ විට හෝ යම් පරිශීලක ක්‍රියාවක් සිදු වූ විට.

දිනය / වේලාව අත්තනෝමතික ලෙස වෙනස් කර වෙනස් කළ හැකි විට මම දිවා කාල ක්ෂේත්‍රයක් භාවිතා කරමි. උදාහරණයක් ලෙස පරිශීලකයෙකුට පසුව වෙනස් කිරීම් හමුවීම් සුරැකිය හැක.


කාලරාමුව - ස්ථාවර වේලාව, සම්බන්ධීකෘත විශ්ව වේලාව දිවා කාලය - දෘෂ්ටි කෝණයකට සාපේක්ෂව, කාල යොමුවකට (ඊජේ කාල කලාපය දේශීය වේලාව) විය හැකිය .. සම්බන්ධීකරණ දේශීය වේලාව?
යූසර්

110

මම භාවිතා කිරීම නිර්දේශ වත් එය දිනයවේලාව හෝ අවකාශය ඇත්තේ පාලකයන්ට ක්ෂේත්රයේ. ඔබට සමස්තයක් ලෙස නිශ්චිත දිනයක් නියෝජනය කිරීමට අවශ්‍ය නම් (උපන් දිනය වැනි), පසුව DATE වර්ගයක් භාවිතා කරන්න, නමුත් ඔබ ඊට වඩා විශේෂිත නම්, ඒකකයකට වඩා සැබෑ මොහොතක් පටිගත කිරීමට ඔබ උනන්දු වනු ඇත. කාලය (දිනය, සතිය, මාසය, වර්ෂය). DATETIME හෝ TIMESTAMP භාවිතා කරනවා වෙනුවට, BIGINT භාවිතා කරන්න, සහ යුගයේ සිට මිලි තත්පර ගණනක් ගබඩා කරන්න (System.currentTimeMillis () ඔබ ජාවා භාවිතා කරන්නේ නම්). මෙය වාසි කිහිපයක් ඇත:

  1. ඔබ විකුණුම්කරුවන්ගේ අගුළු දැමීමෙන් වළකින්න. සෑම දත්ත ගබඩාවක්ම සාපේක්ෂව සමාන ආකාරයකින් පූර්ණ සංඛ්‍යා සඳහා සහය දක්වයි. ඔබට වෙනත් දත්ත ගබඩාවකට යාමට අවශ්‍ය යැයි සිතමු. MySQL හි DATETIME අගයන් අතර ඇති වෙනස්කම් සහ ඔරකල් ඒවා නිර්වචනය කරන්නේ කෙසේද යන්න ගැන ඔබට කරදර වීමට අවශ්‍යද? MySQL හි විවිධ අනුවාදයන් අතර පවා, TIMESTAMPS හි වෙනස් මට්ටමේ නිරවද්‍යතාවයක් ඇත. කාලරාමුවල MySQL මිලි තත්පර සඳහා සහය දැක්වූයේ මෑතකදී ය.
  2. කාල කලාප ගැටළු නොමැත. විවිධ දත්ත වර්ග සමඟ කාල කලාප සමඟ සිදුවන්නේ කුමක්ද යන්න පිළිබඳ තීක්ෂ්ණ බුද්ධිමත් අදහස් කිහිපයක් මෙහි ඇත. නමුත් මෙය පොදු දැනුමක්ද, ඔබේ සමකාලීනයන් සියල්ලන්ම එය ඉගෙන ගැනීමට කාලය ගත කරයිද? අනෙක් අතට, බිගින්ට් එකක් java.util.Date බවට වෙනස් කිරීම අවුල් කිරීම තරමක් අපහසුය. BIGINT භාවිතා කිරීම කාල කලාප සමඟ ගැටලු රාශියක් පාර අයිනේ වැටීමට හේතු වේ.
  3. පරාසයන් හෝ නිරවද්‍යතාවය ගැන කරදර නොවන්න. අනාගත දින පරාසයන් අනුව අඩු කිරීම ගැන ඔබ කරදර විය යුතු නැත (TIMESTAMP යන්නේ 2038 දක්වා පමණි).
  4. තෙවන පාර්ශවීය මෙවලම් ඒකාබද්ධ කිරීම. පූර්ණ සංඛ්‍යාවක් භාවිතා කිරීමෙන්, තෙවන පාර්ශවීය මෙවලම් (උදා: EclipseLink) දත්ත සමුදාය සමඟ අතුරුමුහුණත් කිරීම සුළුපටු ය. සෑම තෙවන පාර්ශවීය මෙවලමක්ම MySQL මෙන් “දිවා කාලය” පිළිබඳ අවබෝධයක් ලබා නොගනී. ඔබ මෙම අභිරුචි දත්ත වර්ග භාවිතා කරන්නේ නම් ඔබ java.sql.TimeStamp හෝ java.util.Date වස්තුවක් භාවිතා කළ යුතුද යන්න හයිබර්නේට් හි උත්සාහ කර බැලීමට අවශ්‍යද? ඔබගේ මූලික දත්ත වර්ග භාවිතා කිරීම තෙවන පාර්ශවීය මෙවලම් සමඟ භාවිතා කිරීම සුළුපටු නොවේ.

දත්ත සමුදායක් තුළ ඔබ මුදල් වටිනාකමක් (එනම් $ 1.99) ගබඩා කරන්නේ කෙසේද යන්න මෙම ගැටළුව සමීපව සම්බන්ධ වේ. ඔබ දශමයක් හෝ දත්ත සමුදායේ මුදල් වර්ගය භාවිතා කළ යුතුද? ඉහත ලැයිස්තුගත කර ඇති එකම හේතු බොහොමයක් නිසා මෙම විකල්ප 3 ම භයානක ය. විසඳුම වන්නේ මුදල් වටිනාකම BIGINT භාවිතයෙන් ශත තුළ ගබඩා කර පසුව ඔබ පරිශීලකයාට වටිනාකම පෙන්වන විට ශත ඩොලර් බවට පරිවර්තනය කිරීමයි. දත්ත සමුදායේ කාර්යය වන්නේ දත්ත ගබඩා කිරීම සහ එම දත්ත අර්ථ නිරූපණය කිරීම නොවේ. දත්ත සමුදායන්හි (විශේෂයෙන් ඔරකල්) ඔබ දකින මෙම විසිතුරු දත්ත වර්ග සියල්ලම එකතු නොකරන අතර විකුණුම්කරුවන්ගේ අගුළු දැමීමේ මාවතෙන් ඔබව ආරම්භ කරන්න.


12
මම මේ විසඳුමට කැමතියි. 2038 දී TIMESTAMP කල් ඉකුත්වීම ප්‍රධාන ගැටළුවකි. එය එතරම් දුර නොවේ!
චාලි ඩල්සාස්

4
Har චාර්ලි ඩල්සාස් වර්තමාන මෘදුකාංගය ඒ අවස්ථාවේ පවතිනු ඇතැයි ඔබ සිතනවාද :-P
හබීබ් පර්වාඩ්

13
එය මිලි තත්පර ගණනක් ලෙස ගබඩා කර තිබේ නම් දිනය අනුව දත්ත විමසීම දුෂ්කර කරයි
අලි සයීඩ්

4
අතේ ගෙන යා හැකි සහ බහු කාල කලාපවල පරිශීලකයින් හැසිරවීම ගැන හෝ පරිශීලකයින්ට වඩා විවිධ කාල කලාපවල දත්ත සමුදායන් ගැන සැලකිලිමත් වන්නේ නම් මෙය සැබවින්ම හොඳම විසඳුම වේ. TIMESTAMP සැලසුම් කිරීමේ අඩුපාඩු නොමැති නම් යා යුතු මාර්ගය විය හැකිය. බිඳුණු විසඳුම් වලට වැඩි ඡන්ද ප්‍රමාණයක් ලැබීම ඉතා නරක නිසා ඒවා කලින් (වසර!) පළ කරන ලදි.
ජර්මානු

4
විශිෂ්ට විසඳුමක්! ඔබ හරියටම "අගුලු දමා" ඇත. "ඔබ වෙනුවෙන් වැඩ කිරීමට" අන් අයට ඉඩ දීමේ පුරුද්දට ඔබ පිවිසෙන විට, ඔබ ක්‍රමලේඛකයා බවට පත් කරන බිටු සහ කෑලි නැති වීමට පටන් ගනී.
fmc

98

TIMESTAMP යනු DATETIME සඳහා බයිට් 4 Vs 8 බයිට් වේ.

http://dev.mysql.com/doc/refman/5.0/en/storage-requirements.html

නමුත් ස්ක්‍රොනයිඩ් පැවසූ පරිදි එය 1970 වර්ෂයට වඩා අඩු සීමාවක් ඇත. අනාගතයේදී සිදුවිය හැකි ඕනෑම දෙයකට එය විශිෂ්ටයි;)


187
අනාගතය අවසන් වන්නේ 2038-01-19 03:14:07 UTC.
මැට්බියන්කෝ

5
ඒක මෝඩ වැඩක්. මම හිතුවේ TIMESTAMP වර්ගය "අනාගතයට සූදානම්" එය සාපේක්ෂව නව නිසා. ඔබ විවිධ කාල කලාප සමඟ වැඩ කරන සෑම අවස්ථාවකම දිවා කාලය UTC බවට පරිවර්තනය කිරීමට ඔබට කරදර විය නොහැක. ඔවුන් TIMESTAMP විශාල කර ගත යුතුව තිබුණි .. අවම වශයෙන් බයිට් 1 ක්වත් විශාල විය යුතුය. එය තව අවුරුදු 68 * 255 = 17340 ක් එකතු කරයි ... එය බිට් 32 නොබැඳි වුවද.
නික්සොෆ්ට්

10
2038 දී TIMESTAMP අවසන් වන්නේ මන්දැයි ඔබ දන්නවාද? මන්ද එය පූර්ණ සංඛ්‍යාවක් වන අතර නිඛිලවල සීමාව 2147483647 වේ. මම හිතන්නේ මෙය හේතුවයි. සමහර විට ඔවුන් එහි වර්ගය වර්චර් ලෙස වෙනස් කර එය හැසිරවිය යුතු ආකාරය වෙනස් කළහොත් එය “අනාගතයට සූදානම්” වනු ඇත.
වින්සා

6
in වින්සා, මම හිතන්නේ නැහැ ඒ වෙනකොට අනාගතය සූදානම් වෙයි කියලා. තවමත් Y2K දෝෂය මතකද? 2038 එනවා.
පැසීරියර්

2
2038 වන විට, MySQL (එය තවමත් පවතී නම්) හුදෙක් බයිට් 4 කට වඩා භාවිතා කිරීමට TIMESTAMP ක්ෂේත්‍රය යාවත්කාලීන කර පුළුල් පරාසයකට ඉඩ දෙනු ඇත
the_nuts

95
  1. TIMESTAMP යනු DATETIME සඳහා බයිට් හතරක් එදිරිව බයිට් අටකි.

  2. කාලරාමු ද දත්ත සමුදායේ සැහැල්ලු වන අතර වේගයෙන් සුචිගත කර ඇත.

  3. දිනය සහ වේලාව යන දෙකම අඩංගු අගයන් ඔබට අවශ්‍ය විට DATETIME වර්ගය භාවිතා වේ. MySQL විසින් DATETIME අගයන් 'YYYY-MM-DD HH: MM: SS' ආකෘතියෙන් ලබා ගනී. සහාය දක්වන පරාසය '1000-01-01 00:00:00 ′ සිට' 9999-12-31 23:59:59 is වේ.

TIMESTAMP දත්ත වර්ගයට '1970-01-01 00:00:01 ′ UTC සිට' 2038-01-09 03:14:07 ′ UTC පරාසයක් ඇත. MySQL අනුවාදය සහ සේවාදායකය ක්‍රියාත්මක වන SQL මාදිලිය මත පදනම්ව එයට විවිධ ගුණාංග ඇත.

  1. DATETIME නියත වන අතර TIMESTAMP ක්‍රියාත්මක වන්නේ කාල කලාප සැකසුම මගිනි.

6
ඔබ # 4 පැහැදිලි කර ගත යුතුය: ගබඩා කර ඇති කාලරාමුව කාල කලාපයට නියත හා සාපේක්ෂ නොවන (සම්පූර්ණයෙන්ම අ nost ෙයවාදී) වන අතර නැවත ලබා ගැනීමේදී පෙන්වන ප්‍රතිදානය ඉල්ලීම් සැසියේ කාල කලාපය බලපායි. DATETIME සෑම විටම එය පටිගත කරන ලද කාල කලාපයට සාපේක්ෂ වන අතර සෑම විටම එම සන්දර්භය තුළ සලකා බැලිය යුතුය, එය දැන් යෙදුමට පැවරී ඇති වගකීමකි.
ක්‍රිස්ටෝපර් මැක්ගෝවන්

1
නියම පිළිතුර. මෙම පිළිතුරට එකතු කිරීම සඳහා, '2038-01-09 03:14:07' ඉක්මවා වටිනාකම් ගබඩා කිරීමට අප උත්සාහ කරන්නේ නම්, අපට දෝෂයක් ඇතිවිය හැකිය, නැතහොත් එය '0000-00-00 00:00:00' ලෙස ගබඩා වේ. කාලානුරූපී අගයන් (සංකේතාංකන අරමුණු සඳහා) ඇති බැවින් මගේ දත්ත සමුදාය සඳහා මෙම දෝෂය මට ලැබුණි.
කාර්තික්ස්

5.5 ට අඩු mysql අනුවාද වල DEFAULT අගය සමඟ DATETIME සමඟ ගැටළුවක් ද ඇත. dba.stackexchange.com/questions/132951/…
වේලාරෝ

47

යෙදුම මත රඳා පවතී.

සංගායි හි හමුවීමක් සඳහා පරිශීලකයෙකු විසින් නිව්යෝක්හි සේවාදායකයකට කාලරාමුව සැකසීම සලකා බලන්න. දැන් පරිශීලකයා සංගායි වෙත සම්බන්ධ වන විට, ඔහු ටෝකියෝ හි කැඩපත් සේවාදායකයකින් එම හමුවීම් කාලරාමුව වෙත ප්‍රවේශ වේ. ඔහු පත්වීම ටෝකියෝ වේලාවේදී දකිනු ඇත.

එබැවින් හමුවීමක් හෝ කාලසටහනක් වැනි පරිශීලක කාලය නියෝජනය කරන අගයන් සඳහා, දිවා කාලය වඩා හොඳය. සේවාදායක සැකසුම් නොසලකා පරිශීලකයාට අවශ්‍ය දිනය හා වේලාව පාලනය කිරීමට එය ඉඩ දෙයි. නියම කරන ලද වේලාව යනු සේවාදායකයාගේ කාල කලාපය, පරිශීලකයාගේ කාල කලාපය හෝ දිවා ආලෝකය ඉතිරි කිරීමේ කාලය ගණනය කරන ආකාරය වෙනස් කිරීම (ඔව් එය වෙනස් වේ).

අනෙක් අතට, ගෙවීම් ගනුදෙනු, වගු වෙනස් කිරීම් හෝ ලොග් වීම වැනි පද්ධති වේලාව නියෝජනය කරන අගයන් සඳහා, සෑම විටම කාලරාමු භාවිතා කරන්න. සේවාදායකය වෙනත් කාල කලාපයකට ගෙන යාමෙන් හෝ විවිධ කාල කලාපවල සේවාදායකයන් අතර සංසන්දනය කිරීමෙන් පද්ධතියට බලපෑමක් සිදු නොවේ.

කාලරාමු ද දත්ත සමුදායේ සැහැල්ලු වන අතර වේගයෙන් සුචිගත කර ඇත.


ඔබගේ යෙදුම සේවාදායකයේ කාල කලාපය මත රඳා නොසිටිය යුතුය. කිසියම් විමසුමක් නිකුත් කිරීමට පෙර යෙදුමක් එය භාවිතා කරන දත්ත සමුදා සම්බන්ධතාවයේ සැසියෙහි කාල කලාපය සෑම විටම තෝරා ගත යුතුය. බහු පරිශීලකයින් අතර සම්බන්ධතාවයක් බෙදාගෙන තිබේ නම් (උදා: වෙබ්අප්), යූටීසී භාවිතා කර විදැහුම්කරණ පැත්තේ කාල කලාප පරිවර්තනය කරන්න.
ඩොල්මන්

43

2016 + : මම උපදෙස් දෙන්නේ ඔබේ MySQL කාල කලාපය UTC ලෙස සකසා DATETIME භාවිතා කරන්න:

ඕනෑම මෑත ඉදිරිපස රාමුවකට (කෝණික 1/2, ප්‍රතික්‍රියා, Vue, ...) ඔබගේ UTC දිවා කාලය දේශීය වේලාවට පහසුවෙන් සහ ස්වයංක්‍රීයව පරිවර්තනය කළ හැකිය.

අමතරව:

(ඔබ ඔබේ සේවාදායකයන්ගේ කාල කලාපය වෙනස් කිරීමට ඉඩ නොමැති නම්)


AngularJs සමඟ උදාහරණය

// back-end: format for angular within the sql query
SELECT DATE_FORMAT(my_datetime, "%Y-%m-%dT%TZ")...

// font-end Output the localised time
{{item.my_datetime | date :'medium' }}

සියලුම දේශීයකරණය කළ කාල ආකෘතිය මෙහි ඇත: https://docs.angularjs.org/api/ng/filter/date


8
ඔබගේ දත්ත ඔබගේ සේවාදායකයන්ගේ කාල කලාප සැකසුම් සමඟ අමුණා නොතිබිය යුතුය. සමහර විට, ඔබේ මේසය යට තනි MySQL පෙට්ටියක් තිබේ නම් එය ඔබ වෙනුවෙන් වැඩ කරයි
ජින්

In ජින් යූටීසී යන්නෙන් අදහස් කරන්නේ ටයිම්ස්ටැම්ප් වැනි කාල කලාපයක් නොමැති බවයි. ඔබගේ සියලුම සේවාදායකයන් UTC හි තිබේ නම් කිසිදු ගැටළුවක් නොමැත. ඔබට 2000 වින්‍යාසය තිබේ නම් එය ඔබ වෙනුවෙන් ක්‍රියා නොකරනු ඇත.
සෙබස්තියන් හෝරින්

TIMESTAMP අනාගතයේදී බිට් 64 ක අගයකට උසස් කළ හැකිය. එවිට තවත් ගැටලුවක් නොමැත.
දෙවරක්

මේ වගේ දෙයක් අල්ලා ගැනීම සඳහා සමස්ත තෙවන පාර්ශවීය පුස්තකාල පූරණය කිරීම කාර්ය සාධනය සඳහා එතරම් හොඳ විය නොහැකිද? එය සේවාදායකයාගේ පැත්තක් වන අතර එය ඔබේ දත්ත ගබඩාවට බල නොපායි ... එහෙත්, ඔබ ඉදිරිපස කෙළවරේ කරන ඕනෑම දෙයකට සර්වර්සයිඩ් චෙක්පත් අවශ්‍ය වේ. ඉතින්, සම්පූර්ණ පින්තූරය ගැන සිතීම , එය ඇත්ත වශයෙන්ම වේග ගැටළුව සඳහා උපකාරී වේද? - ඒ මිණුම් දණ්ඩ ටිකක් අමුතුයි, මට දැනෙනවා. කාලරාමු ක්ෂේත්‍ර සංසන්දනය කිරීම සඳහා විමසුමක නූලක් භාවිතා කිරීම ද අමුතු බවක් දැනේ. එය කාර්ය සාධනයට ද හානි කළ යුතුය, නේද?
NoobishPro

1
සේවාදායකයේ time_ කලාපය මත ඔබගේ යෙදුම මත රඳා නොසිටින්න. ඒ වෙනුවට එක් එක් දත්ත සමුදා සම්බන්ධතාවය SET time_zone = '+0:00';සඳහා භාවිතා කළ යුතු කාල කලාපය අර්ථ දක්වන්න: UTC සඳහා.
ඩොල්මන්

37

timestampකෙත විශේෂ නඩුව datetimeක්ෂේත්රයේ. timestampවිශේෂ ගුණාංග ලබා ගැනීම සඳහා ඔබට තීරු සෑදිය හැකිය ; එය නිර්මාණය කිරීම සහ / හෝ යාවත්කාලීන කිරීම මත යාවත්කාලීන කිරීමට සැකසිය හැක.

"විශාල" දත්ත සමුදායන් අනුව, timestampඑය මත විශේෂ අවස්ථා ප්‍රේරක කිහිපයක් ඇත.

නිවැරදි දෙය සම්පූර්ණයෙන්ම රඳා පවතින්නේ ඔබට කිරීමට අවශ්‍ය දේ මතය.


6
නැත, වෙනස හුදෙක් "විශේෂ අවස්ථාවක්" පමණක් නොවේ. අගයන් සැකසෙන / විමසන සැසියේ කාල කලාප වෙනස් ආකාරයකින් සම්බන්ධ වන බැවිනි.
ඩොල්මන්

"නිවැරදි දේ යනු සම්පූර්ණයෙන්ම ඔබට කිරීමට අවශ්‍ය දේ මත රඳා පවතී." SE හි බොහෝ පිළිතුරු ඇත, ප්‍රමාණවත් සාධාරණීකරණයකින් තොරව, "ඔබ කිසි විටෙකත් X නොකළ යුතුය " හෝ "ඔබ සැමවිටම Y කළ යුතුය ".
Agi Hammerthief

37

TIMESTAMP සැමවිටම UTC හි ඇත (එනම් 1970-01-01 සිට UTC හි ගත වූ තත්පර ගණන), සහ ඔබේ MySQL සේවාදායකය එය ස්වයංක්‍රීයව සම්බන්ධතා කාල කලාපය සඳහා දිනය / වේලාව බවට පරිවර්තනය කරයි. දිගු කාලීනව, TIMESTAMP යනු යා යුතු මාර්ගයයි, මන්ද ඔබේ තාවකාලික දත්ත සැමවිටම UTC හි පවතින බව ඔබ දන්නා බැවිනි. උදාහරණයක් ලෙස, ඔබ වෙනත් සේවාදායකයකට සංක්‍රමණය වුවහොත් හෝ ඔබේ සේවාදායකයේ කාල කලාප සැකසුම් වෙනස් කළහොත් ඔබ ඔබේ දිනයන් ඉස්කුරුප්පු නොකරනු ඇත.

සටහන: පෙරනිමි සම්බන්ධතා කාල කලාපය සේවාදායක කාල කලාපය වේ, නමුත් මෙය සැසියකට (කළ යුතු) වෙනස් කළ හැකිය (බලන්න SET time_zone = ...).


29

DATETIME, TIMESTAMP සහ DATE අතර සංසන්දනය

රූප විස්තරය මෙහි ඇතුළත් කරන්න

එය කුමක්ද?

  • DATETIME හෝ TIMESTAMP අගයකට මයික්‍රෝ තත්පර (ඉලක්කම් 6) දක්වා නිරවද්‍යතාවයෙන් තත්පර භාගයක පසුපස කොටස ඇතුළත් කළ හැකිය. විශේෂයෙන්, DATETIME හෝ TIMESTAMP තීරුවකට ඇතුළත් කළ අගයක ඕනෑම භාගික කොටසක් ඉවතලනු වෙනුවට ගබඩා කර ඇත. මෙය ඇත්ත වශයෙන්ම විකල්පයකි.

මුලාශ්‍ර:


24

MySQL සහ PHP සමඟ වැඩ කිරීමේදී මම සෑම විටම යුනික්ස් කාලරාමුව භාවිතා කරමි. PHP හි පෙරනිමි දිනය ක්‍රමය මෙයට ප්‍රධාන හේතුව පරාමිතිය ලෙස කාලරාමුව භාවිතා කරයි, එබැවින් විග්‍රහ කිරීම අවශ්‍ය නොවේ.

PHP හි වර්තමාන යුනික්ස් කාලරාමුව ලබා ගැනීම සඳහා, කරන්න time();
සහ MySQL කරන්න SELECT UNIX_TIMESTAMP();.


6
-1 ඇත්ත වශයෙන්ම පහත පිළිතුර වඩා හොඳ යැයි මම සිතමි - දිවා කාලය භාවිතා කිරීම මඟින් දිනය සැකසීම සඳහා වැඩි තර්කනයක් MySQL තුළට තල්ලු කිරීමට ඉඩ සලසයි, එය ඉතා ප්‍රයෝජනවත් වේ.
ටෝබි හෙඩ්

MySQL හි වර්ග කිරීම php ට වඩා මන්දගාමී බව පෙන්වන මිණුම් සලකුණු තිබේද?
sdkfasldf

හොඳයි, එය රඳා පවතී, සමහර විට අපි ස්ට්රෝටයිම් භාවිතා නොකිරීමට කැමති විට එය භාවිතා කිරීම හොඳය. (php5.3 dep)
ඇඩම් රාමදාන්

අවශ්‍ය නම් FROM_UNIXTIME භාවිතා කිරීමෙන් ඔබට තර්කනය mysql වෙතට තල්ලු කළ හැකිය
inarilo

මම මගේ PHP යෙදුම්වල සහ MySQL හි සියලුම යුනික්ස් කාලරාමු භාවිතා කර ඇත, කෙසේ වෙතත් දින වකවානු සහ වේලාවන් ස්වදේශීය දිනය / වේලාවන් ලෙස MySQL හි ගබඩා කිරීම වඩා පහසු බව මට පෙනී ගියේය. වාර්තා කිරීමේ අරමුණු සහ දත්ත කට්ටල පිරික්සීමට මෙය විශේෂයෙන් ප්‍රයෝජනවත් වේ. කාලයාගේ ඇවෑමෙන් මම යුනික්ස් කාලරාමු පිටපත් කිරීමට / පසු කිරීමට යාමෙන් කලකිරීමට පත්වීමත් සමඟ මම මාරු වීමට පටන් ගතිමි. කාර්ය සාධනය සහ වෙනත් වාසි / අවාසි ඇති බව මට විශ්වාසයි, නමුත් ඔබේ භාවිතයේ පහසුව අනුව තරමක් ක්ෂුද්‍ර ප්‍රශස්තිකරණයට වඩා වැදගත් විය හැකිය.
ඩේවිඩ්චෙරර්

24

MySQL හි සඳහන් කිරීම වටී, ඔබේ වගු තීරු නිර්මාණය කිරීමේදී පහත දැක්වෙන රේඛා ඔස්සේ යමක් භාවිතා කළ හැකිය:

on update CURRENT_TIMESTAMP

මෙය ඔබ පේළියක් වෙනස් කරන සෑම අවස්ථාවකම වේලාව යාවත්කාලීන කරනු ඇති අතර සමහර විට ගබඩා කළ අවසන් සංස්කරණ තොරතුරු සඳහා ඉතා ප්‍රයෝජනවත් වේ. කෙසේ වෙතත් මෙය ක්‍රියාත්මක වන්නේ කාලරාමුව සමඟ මිස දිවා කාලයේ නොවේ.


17

මගේ අත්දැකීම් අනුව, ඔබට එක් වරක් පමණක් ඇතුළත් වන දින ක්ෂේත්‍රයක් අවශ්‍ය නම් සහ එම ක්ෂේත්‍රය පිළිබඳ යාවත්කාලීන කිරීමක් හෝ වෙනත් ක්‍රියාමාර්ගයක් ගැනීමට ඔබට අවශ්‍ය නැතිනම්, දිනය සමඟ යන්න .

උදාහරණයක් ලෙස, ලියාපදිංචි දිනය ක්ෂේත්‍රයක් සහිත userවගුවක් සලකා බලන්න . එම වගුවේ, කිසියම් පරිශීලකයෙකුගේ අවසන් වරට ලොග් වූ වේලාව දැන ගැනීමට ඔබට අවශ්‍ය නම්, කාලරාමු වර්ගයේ ක්ෂේත්‍රයක් සමඟ ගොස් ක්ෂේත්‍රය යාවත්කාලීන වේ.user

ඔබ phpMyAdmin වෙතින් වගුව නිර්මාණය කරන්නේ නම්, පේළි යාවත්කාලීන කිරීමක් සිදු වූ විට පෙරනිමි සැකසුම කාලරාමු ක්ෂේත්‍රය යාවත්කාලීන කරනු ඇත . ඔබගේ කාලරාමුව ගොනු කිරීම පේළි යාවත්කාලීන කිරීම් සමඟ යාවත්කාලීන නොවන්නේ නම්, ඔබට පහත සඳහන් විමසුම භාවිතා කර කාලරාමු ක්ෂේත්‍රයක් ස්වයංක්‍රීයව යාවත්කාලීන කර ගත හැකිය.

ALTER TABLE your_table
      MODIFY COLUMN ts_activity TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;

15

කාලරාමු දත්ත වර්ගය දිනය හා වේලාව ගබඩා කරයි, නමුත් යූටීසී ආකෘතියෙන් මිස දිවා කාලයේ මෙන් වර්තමාන කාල කලාප ආකෘතියෙන් නොවේ. ඔබ දත්ත ලබා ගන්නා විට, කාලරාමුව නැවත එය වත්මන් කාල කලාප වේලාව බවට පරිවර්තනය කරයි.

එබැවින් ඔබ ඇමරිකා එක්සත් ජනපදයේ සිටින අතර ඇමරිකා එක්සත් ජනපදයේ කාල කලාපයක් ඇති සේවාදායකයකුගෙන් දත්ත ලබා ගනී යැයි සිතමු. එවිට ඔබට ඇමරිකා එක්සත් ජනපද කාල කලාපයට අනුව දිනය හා වේලාව ලැබෙනු ඇත. කාලරාමුව දත්ත වර්ග තීරුව සෑම විටම එහි පේළිය යාවත්කාලීන වූ විට ස්වයංක්‍රීයව යාවත්කාලීන වේ. එබැවින් යම් පේළියක් අවසන් වරට යාවත්කාලීන කළ විට එය නිරීක්ෂණය කිරීම ප්‍රයෝජනවත් වේ.

වැඩි විස්තර සඳහා ඔබට බ්ලොග් පෝස්ට් ටයිම්ස්ටැම්ප් එදිරිව දිවා කාලය කියවිය හැකිය .


ඔබට (කළ යුතු) සෑම විටම සැසි මට්ටමින් SET time_zone = '+0:00';(යූටීසී සමඟ) කාල කලාපය නිර්වචනය කළ හැකිය, ඔබට ලැබෙන්නේ / TIMESTAMPසාරධර්ම වලින් සකසා ඇති දේ සහතික කර ගැනීමට සහ වෙනස් විය හැකි සේවාදායක කාල_ කලාප පෙරනිමිය මත පදනම්ව වළක්වා ගන්න.
ඩොල්මන්

14

මම සෑම විටම යුනික්ස් කාලරාමුව භාවිතා කරමි, හුදෙක් දිවා කාලයේ තොරතුරු රාශියක් සමඟ ගනුදෙනු කිරීමේදී, විශේෂයෙන් කාල කලාප සඳහා ගැලපීම් සිදුකරන විට, දින එකතු කිරීම / අඩු කිරීම සහ වෙනත් යනාදිය සමඟ සනීපාරක්ෂාව පවත්වා ගැනීම සඳහා. කාලරාමු සංසන්දනය කිරීමේදී, මෙය කාල කලාපයේ සංකීර්ණ සාධක බැහැර කරන අතර ඔබේ සේවාදායක පාර්ශව සැකසීමේදී (එය යෙදුම් කේතය හෝ දත්ත සමුදා විමසීම් වේවා) සම්පත් ඉතිරි කර ගැනීමට ඉඩ සලසයි, එමඟින් ඔබ සැහැල්ලු බර ගණිතය භාවිතා කරන අතර ඊට වඩා බර දිනය-වේලාව එකතු කිරීම / අඩු කිරීම කාර්යයන්.

සලකා බැලිය යුතු තවත් දෙයක්:

ඔබ යෙදුමක් ගොඩනඟන්නේ නම්, ඔබේ දත්ත සීමාව ඉක්මවා භාවිතා කළ යුතු ආකාරය ඔබ කිසි විටෙකත් නොදනී. තෙවන පාර්ශවීය ඒපීඅයි එකක ඇති අයිතම සමූහයක් සමඟ ඔබේ දත්ත කට්ටලයේ ඇති වාර්තා පොකුරක් සංසන්දනය කර ඒවා කාලානුක්‍රමික පිළිවෙලට තබන්නැයි ඔබ සිතන්නේ නම්, ඔබ සතුටු වනු ඇත ඔබේ පේළි සඳහා යුනික්ස් කාලරාමු. ඔබ MySQL කාලරාමු භාවිතා කිරීමට තීරණය කළත්, යුනික්ස් කාලරාමුව රක්ෂණයක් ලෙස ගබඩා කරන්න.


14

මගේ නඩුවේදී, මම සෑම දෙයක්ම සඳහා කාල කලාපයක් ලෙස යූටීසී සකසා ඇත: පද්ධතිය, දත්ත සමුදා සේවාදායකය යනාදිය මට හැකි සෑම අවස්ථාවකම. මගේ ගනුදෙනුකරුට වෙනත් කාල කලාපයක් අවශ්‍ය නම්, මම එය යෙදුම මත වින්‍යාස කරමි.

මම සෑම විටම පාහේ දිවා කාල ක්ෂේත්‍රයන්ට වඩා කාලරාමු වලට කැමැත්තක් දක්වන්නෙමි, මන්ද කාලරාමු වල ව්‍යංගයෙන් කාල කලාපය ඇතුළත් වේ. එබැවින්, විවිධ කාල කලාප වලින් පරිශීලකයින්ගෙන් යෙදුම ප්‍රවේශ වන මොහොතේ සිට සහ ඔවුන්ගේ ප්‍රාදේශීය කාල කලාපයේ දිනයන් සහ වේලාවන් දැකීමට ඔබට අවශ්‍ය බැවින්, මෙම ක්ෂේත්‍ර වර්ගය එය දිවා කාල ක්ෂේත්‍රයන්හි දත්ත සුරකිනවාට වඩා එය කිරීමට පහසු කරයි. .

ප්ලස් ලෙස, දත්ත සමුදාය වෙනත් කාල කලාපයක් සහිත පද්ධතියකට සංක්‍රමණය වන විට, මට කාලරාමු භාවිතා කිරීම පිළිබඳ වැඩි විශ්වාසයක් දැනෙනු ඇත. තත්පර දෙකක කාල පරතරයක් අතර වෙනස ගණනය කිරීමේදී හා පැය 1 ක් හෝ ඊට අඩු නිරවද්‍යතාවයක් අවශ්‍ය විටදී ඇතිවිය හැකි ගැටළු නොකියයි.

එබැවින්, සාරාංශගත කිරීම සඳහා, කාලරාමුවෙහි මෙම වාසි මම අගය කරමි:

  • ජාත්‍යන්තර (බහු කාල කලාප) යෙදුම්වල භාවිතා කිරීමට සූදානම්
  • කාල කලාප අතර පහසුවෙන් සංක්‍රමණය වීම
  • වෙනස්කම් ගණනය කිරීම පහසුය (කාලරාමු දෙකම අඩු කරන්න)
  • ගිම්හාන කාල පරිච්ඡේදයක් තුළ / පිටත දිනයන් ගැන කරදර නොවන්න

මේ සියලු හේතු නිසා, මම තෝරා ගත හැකි UTC සහ කාලරාමු ක්ෂේත්‍ර තෝරා ගනිමි. මම හිසරදය වළක්වනවා;)


2038 ජනවාරි 20 වන විට ඔබගේ යෙදුමට සහය දක්වන පුද්ගලයාට කාලරාමු දත්ත විනෝදජනක වනු ඇත. ටික් ටොක් ටික් ටෝක්
විල්සන් හෝක්

ටයිම්ස්ටැම්ප් වර්ගය පසුව ටිකක් වැඩි කර හැකි අගයන් මෙන් දෙගුණයක් කළ හැකිය.
රොජර් කැම්පනෙරා

ඔබේ න්‍යාය 'ටිකක් වැඩි කරන්න' පරීක්ෂා කර ඔබට 2038 පෙබරවාරි 1 වන දින සාර්ථකව ගබඩා කර MySQL සමඟ ලබා ගත හැකිදැයි බලන්න. කරුණාකර ඔබේ වගු අර්ථ දැක්වීම අවසන් කරමු. 2038 පෙබරවාරියේදී ඔබට බොහෝ අවාසනාවන්ත අතීත මිතුරන් දැනෙන්නට ඇත.
විල්සන් හෝක්

1
38 විල්සන්හෝක් ඔබට කෙසේ හෝ 2038 ට පෙර MySQL අනුවාදය යාවත්කාලීන කළ යුතුය. එම දීර් T TIMESTAMP සංක්‍රමණය මගින් හසුරුවනු ඇත. එසේම, උකස් හැසිරවීමට අමතරව අයදුම්පත් කිහිපයක් මේ වන විට සැබවින්ම 2038 ගැන සැලකිලිමත් විය යුතුය.
ඩොල්මන්

ol ඩොල්මන් බොහෝ වෘත්තීය මට්ටමේ මෙවලම් සහ ද්‍රව්‍ය සඳහා අවුරුදු 20+ වගකීමක් ඇත. එබැවින් අද වැනි දෙයක් warranties.expires_atMySQL කාලරාමුව විය නොහැක.
alexw

13

ඔබ මේසයක් මත යාවත්කාලීන ප්‍රකාශයක් කරන විට කාලරාමුව වෙනස් වීම ගැන පරිස්සම් වන්න. ඔබට 'නම' (වර්චාර්), 'වයස' (int), සහ 'දිනය_ එකතු කරන ලද' (කාලරාමුව) යන තීරු සහිත වගුවක් තිබේ නම් ඔබ පහත සඳහන් DML ප්‍රකාශය ක්‍රියාත්මක කරයි

UPDATE table
SET age = 30

ඔබගේ 'දිනය_ එකතු කළ' තීරුවේ සෑම අගයක්ම වත්මන් කාලරාමුව වෙත වෙනස් කරනු ලැබේ.


3
ඔබ ඔබේ වගුව සකසන ආකාරය මත පදනම්ව ඔබට මෙම හැසිරීම පාලනය කළ හැකිය. dev.mysql.com/doc/refman/5.5/en/timestamp-initialization.html
චාල්ස් ෆයිගා

5
HarCharlesFaiga සුපුරුදු හැසිරීම යනු වෙනත් ඕනෑම තීරුවක් යාවත්කාලීන කළ විට කාලරාමුව යාවත්කාලීන කිරීමයි. කාලරාමුවෙහි මුල් වටිනාකම රඳවා ගැනීමට ඔබට අවශ්‍ය නම් මෙය පැහැදිලිවම අක්‍රිය කළ යුතුය
ලොයිඩ් බෑන්ක්ස්

එය කුමක් ද ?! ඔබ ටයිම්ස්ටැම්ප් තීරුවON UPDATE CURRENT_TIMESTAMP
ගණකාධිකාරී م

මෙය වගුව නිර්මාණය කිරීමේදී ඔබට පැහැදිලිව සක්‍රිය කළ යුතු ලක්ෂණයකි .
ඩොල්මන්

13

මෙම ලිපියෙන් ලබාගත් සඳහන:

ප්රධාන වෙනස්කම්:

වාර්තා වල වෙනස්කම් නිරීක්ෂණය කිරීමට TIMESTAMP භාවිතා කරයි, සහ වාර්තාව වෙනස් වූ සෑම අවස්ථාවකම යාවත්කාලීන කරන්න. නිශ්චිත හා ස්ථිතික අගය ගබඩා කිරීම සඳහා භාවිතා කරන DATETIME, එය වාර්තා වල කිසිදු වෙනසක් මගින් බලපෑමට ලක් නොවේ.

TIMESTAMP ද විවිධ කාල කලාප සම්බන්ධ සැකසුම් වලට බලපායි. DATETIME නියතයි.

TIMESTAMP අභ්‍යන්තරව වත්මන් කාල කලාපය UTC ලෙස ගබඩා කිරීම සඳහා පරිවර්තනය කර ඇති අතර නැවත ලබා ගැනීමේදී වත්මන් කාල කලාපයට පරිවර්තනය වේ. DATETIME හට මෙය කළ නොහැක.

TIMESTAMP සහය දක්වන පරාසය: '1970-01-01 00:00:01 ′ UTC සිට' 2038-01-19 03:14:07 ′ UTC DATETIME සහය දක්වන පරාසය: '1000-01-01 00:00:00 ′ සිට' 9999 දක්වා -12-31 23:59:59


11
+---------------------------------------------------------------------------------------+--------------------------------------------------------------------------+
|                                       TIMESTAMP                                       |                                 DATETIME                                 |
+---------------------------------------------------------------------------------------+--------------------------------------------------------------------------+
| TIMESTAMP requires 4 bytes.                                                           | DATETIME requires 8 bytes.                                               |
| Timestamp is the number of seconds that have elapsed since January 1, 1970 00:00 UTC. | DATETIME is a text displays 'YYYY-MM-DD HH:MM:SS' format.                |
| TIMESTAMP supported range: 1970-01-01 00:00:01 UTC to 2038-01-19 03:14:07 UTC.    | DATETIME supported range: 1000-01-01 00:00:00 to 9999-12-31 23:59:59 |
| TIMESTAMP during retrieval converted back to the current time zone.                   | DATETIME can not do this.                                                |
| TIMESTAMP is used mostly for metadata i.e. row created/modified and audit purpose.    | DATETIME is used mostly for user-data.                                   |
+---------------------------------------------------------------------------------------+--------------------------------------------------------------------------+

10

ටයිම්ස්ටැම්ප් සහ ඩේටයිම් අතර ඇති තවත් වෙනසක් වන්නේ ටයිම්ස්ටැම්ප් හි ඔබට පෙරනිමි අගය එන්.යූ.එල්.


8
එය පැහැදිලිවම වැරදිය. මෙන්න උදාහරණයක්: CREATE TABLE t2 ( ts1 TIMESTAMP NULL, ts2 TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP); පළමු තීරුවට NULL අගය පිළිගත හැකිය.
ඔර්මෝස්

10

අනවශ්‍ය ප්‍රේරක භාවිතා නොකර වත්මන් කාලය මත පදනම්ව ස්වයංක්‍රීයව යාවත්කාලීන කිරීමට TIMESTAMP සතු හැකියාව තුළ අසීමිත ප්‍රයෝජනයක් මට හමු විය. TIMESTAMP UTC වුවත් එය කීවාක් මෙන් එය මට පමණි.

එයට විවිධ කාල කලාප හරහා ගමන් කළ හැකිය, එබැවින් ඔබට සාපේක්ෂ වේලාවක් ප්‍රදර්ශනය කිරීමට අවශ්‍ය නම්, UTC වේලාව ඔබට අවශ්‍ය වේ.


9

ප්රධාන වෙනස වන්නේ

දිවා කාල සුචිගත කිරීමේ ගැටළු බැලීමට මෙම ලිපිය බලන්න


6
තීරු අගය මත පදනම් වූ ශ්‍රිතයක් සමඟ ඔබ තෝරා ගන්නේ නම් දෙකම එකම ගැටළුවක් වන අතර දෙකම සුචිගත කළ හැකිය.
මාකස් ඇඩම්ස්

4
දර්ශකය කාලරාමුව මත ක්‍රියා කරන අතර දිවා කාලයේ ක්‍රියා නොකරයිද? ඔබ එම තනතුරු වලින් වැරදි නිගමනවලට එළඹුණා.
සල්මාන් ඒ

9

datetimeකාල කලාප හා සම්බන්ධ බොහෝ ගැටලු සහ දෝෂ වලට මුහුණ දීමෙන් පසු මම මගේ යෙදුම් භාවිතය නතර කළෙමි . IMHO භාවිතය බොහෝ අවස්ථාවන්ට timestampවඩා හොඳයdatetime .

වේලාව කුමක්දැයි ඔබ ඇසූ විට? පිළිතුර '2019-02-05 21:18:30' වැනි දෙයක් ලෙස පැමිණේ, එය සම්පුර්ණ කර නැත, අර්ථ දක්වා නැති පිළිතුරට වෙනත් කොටසක් නොමැති නිසා, කුමන කාල කලාපයේද? වොෂිංටන්? මොස්කව්? බීජිං?

කාල කලාපය නොමැතිව දත්ත වේලාවන් භාවිතා කිරීම යන්නෙන් අදහස් වන්නේ ඔබේ යෙදුම ගනුදෙනු කරන්නේ කාල කලාප 1 ක් පමණක් බවයි, කෙසේ වෙතත් කාලරාමු මඟින් ඔබට ප්‍රතිලාභ ලබා දේ datetime විවිධ කාල කලාපවල එකම නිශ්චිත වේලාවක් පෙන්වීමේ සහ නම්‍යතාවය .

මෙන්න ඔබ භාවිතා කිරීම ගැන පසුතැවෙන datetimeසහ ඔබගේ දත්ත කාලරාමුවල ගබඩා කර තැබීමට ප්‍රාර්ථනා කරන අවස්ථා කිහිපයක් .

  1. ඔබේ ගනුදෙනුකරුවන්ගේ සැනසීම සඳහා ගණිතය සිදු නොකර ඔවුන් කැමති කාල කලාප මත පදනම්ව වේලාවන් පෙන්වීමට සහ කාලය ඔවුන්ගේ අර්ථවත් කාල කලාපයට පරිවර්තනය කිරීමට ඔබට අවශ්‍යය. ඔබට අවශ්‍ය වන්නේ කාල කලාපය වෙනස් කිරීම පමණක් වන අතර ඔබගේ සියලුම යෙදුම් කේතය එක හා සමාන වේ. (ඇත්ත වශයෙන්ම ඔබ සෑම විටම යෙදුම ආරම්භයේ කාල කලාපය නිර්වචනය කළ යුතුය, නැතහොත් PHP යෙදුම් සම්බන්ධයෙන් සැකසුම් ඉල්ලන්න)

    SET time_zone = '+2:00';
  2. ඔබ රැඳී සිටින රට වෙනස් කළ අතර, දත්ත වෙනත් කාල කලාපයකින් (සත්‍ය දත්ත වෙනස් නොකර) දකින අතරතුර නඩත්තු කිරීමේ ඔබේ වැඩ කටයුතු කරගෙන යන්න.

  3. ඔබ ලොව පුරා විවිධ සේවාදායකයින්ගේ දත්ත පිළිගනී, ඒ සෑම කෙනෙකුම ඔහුගේ කාල කලාපයේ කාලය ඇතුල් කරයි.

කෙටියෙන්

datetime = යෙදුම 1 කාල කලාපයට සහය දක්වයි (ඇතුළු කිරීම සහ තේරීම යන දෙකම සඳහා)

timestamp = යෙදුම ඕනෑම කාල කලාපයකට සහය දක්වයි (ඇතුළු කිරීම සහ තේරීම යන දෙකම සඳහා)


මෙම පිළිතුර කාල කලාප සම්බන්ධයෙන් නම්යශීලීභාවය සහ කාලරාමු වල පහසුව පිළිබඳව යම් ඉස්මතු කිරීමක් සඳහා පමණක් වන අතර, එය තීරු ප්‍රමාණය හෝ පරාසය හෝ භාගය වැනි වෙනත් වෙනස්කම් ආවරණය නොකරයි .


එක් වගුවක dateභාවිතා වන ක්ෂේත්‍ර සහ වෙනත් ක්ෂේත්‍ර භාවිතයන් timestampතිබේ නම් කුමක් කළ යුතුද? පෙරහන් කරන ලද දත්ත කාල කලාපයේ whereවෙනස්වීම් වලට අනුකූල නොවන නිසා එය නව ගැටළුවක් ඇති කරනු ඇතැයි මම සිතමි .
අර්ලන්ග් පී

RErlangP එවැනි අවස්ථාවකදී ඔබේ යෙදුම dateවිමසුම යැවීමට පෙර තීරුවේ කාල කලාප ගැටලුව විසඳිය යුතුය .
ගණකාධිකාරී م

7

සෑම දෙයක්ම එක පොදු අමු ආකෘතියක තබා ගැනීමට සහ PHP කේතයේ හෝ ඔබේ SQL විමසුමේ දත්ත සංයුති කිරීමට මම කාලරාමුව භාවිතා කිරීමට කැමැත්තෙමි. සෑම දෙයක්ම සරල තත්පර කිහිපයක තබා ගැනීම සඳහා ඔබේ කේතයේ ප්‍රයෝජනවත් වන අවස්ථා තිබේ.



7

එසේ නොවේ. මෙම DATETIMEසහ TIMESTAMPවර්ග අතිමූලික Generic බලපත්රය යටතේ අවසර ලබා ඇත භාවිතය නඩු සඳහා කැඩිලා. MySQL අනාගතයේදී ඒවා වෙනස් කරනු ඇත. ඔබට BIGINTවෙනත් දෙයක් භාවිතා කිරීමට නිශ්චිත හේතුවක් නොමැති නම් ඔබ යුනික්ස් කාලරාමු භාවිතා කළ යුතුය .

විශේෂ අවස්ථා

ඔබේ තේරීම පහසු වන විශේෂිත අවස්ථා කිහිපයක් මෙන්න, මෙම පිළිතුරේ විශ්ලේෂණය සහ සාමාන්‍ය නිර්දේශය ඔබට අවශ්‍ය නොවේ.

  • දිනය පමණි - ඔබ දිනය ගැන පමණක් සැලකිලිමත් වන්නේ නම් (ඊළඟ චන්ද්‍ර අලුත් අවුරුද්දේ දිනය, 2020-02-25 වැනි) සහ එම දිනය අදාළ වන කාල කලාපය පිළිබඳව ඔබට පැහැදිලි අවබෝධයක් ඇත (නැතහොත් එය ගණන් නොගන්න. චන්ද්ර අලුත් අවුරුද්දේ) ඉන්පසු DATEතීරු වර්ගය භාවිතා කරන්න.

  • ඇතුළත් කිරීමේ වේලාවන් සටහන් කරන්න - ඔබ ඔබේ දත්ත ගබඩාවේ පේළි සඳහා ඇතුළත් කිරීමේ දිනයන් / වේලාවන් සටහන් කරන්නේ නම් සහ ඉදිරි වසර 19 තුළ ඔබේ යෙදුම බිඳී යනු ඇතැයි ඔබ නොසිතන්නේ නම්, ඉදිරියට ගොස් TIMESTAMPපෙරනිමි අගයක් භාවිතා කරන්න CURRENT_TIMESTAMP().

TIMESTAMPකැඩී ඇත්තේ ඇයි ?

TIMESTAMPවර්ගය UTC කාල කලාපයේ තැටියේ ගබඩා කර ඇත. මෙයින් අදහස් කරන්නේ ඔබ ඔබේ සේවාදායකය භෞතිකව ගෙන ගියහොත් එය කැඩී නොයන බවයි. ඒක හොඳයි. නමුත් දැනට අර්ථ දක්වා ඇති පරිදි කාලරාමු 2038 වර්ෂයේදී සම්පූර්ණයෙන්ම වැඩ කිරීම නවත්වනු ඇත.

සෑම අවස්ථාවකදීම ඔබ INSERT INTOහෝ SELECT FROMTIMESTAMP තීරුව, ඔබේ සේවාදායක / මෘදුකාංගය භෞතික පිහිටීම (එනම් වේලා කලාපය වින්යාසය) සැලකිල්ලට ගෙන ඇත. ඔබ ඔබේ යෙදුම් සේවාදායකය ගෙන යන්නේ නම් ඔබගේ දිනයන් කැඩී යයි.

ඇයි DATETIMEකැඩී ?

DATETIMEගබඩා වන DATEහාTIME එකම තීරුවක . කාල කලාපය වටහාගෙන, කාල කලාපය කොතැනකවත් ගබඩා කර නොමැති නම් මේ දෙකටම අර්ථයක් නැත. කාල කලාපය දත්ත සමඟ නොවැලැක්විය හැකි ලෙස සම්බන්ධ වී ඇති නිසා ඔබ අපේක්ෂිත කාල කලාපය තීරුවේ විවරණයක් ලෙස තැබිය යුතුය. එබැවින් ස්වල්ප දෙනෙක් තීරු අදහස් භාවිතා කරති, එබැවින් මෙය සිදුවීමට බලා සිටීම වැරදිය. මට ඇරිසෝනා වෙතින් සේවාදායකයක් උරුම විය, එබැවින් මට සෑම විටම ඇරිසෝනා වේලාවෙන් සියලුම කාලරාමු වෙනත් කාලයකට පරිවර්තනය කළ යුතුය.

DATETIMEනිවැරදි වන එකම තත්වය මෙම වාක්‍යය සම්පූර්ණ කිරීමයි:

ඔබේ වසර 2020 සූර්ය නව වසර ආරම්භ වන්නේ හරියටම ය DATETIME("2020-01-01 00:00:00").

DATETIMES සඳහා වෙනත් හොඳ භාවිතයක් නොමැත . සමහර විට ඔබ ඩෙලවෙයාර්හි නගර රජයක් සඳහා වෙබ් සේවාදායකයක් ගැන සිතනු ඇත. නිසැකවම මෙම සේවාදායකයේ කාල කලාපය සහ මෙම සේවාදායකයට ප්‍රවේශ වන සියලුම පුද්ගලයින් නැගෙනහිර කාල කලාපය සමඟ ඩෙලවෙයාර් හි සිටින බව ඇඟවිය හැකිය, නේද? වැරදි! මෙම සහස්‍රයේ දී, අපි සියල්ලෝම සේවාදායකයන් "වලාකුළෙහි" පවතින බව සිතමු. එබැවින් කිසියම් නිශ්චිත කාල කලාපයක් තුළ ඔබේ සේවාදායකය ගැන සිතීම සැමවිටම වැරදිය, මන්ද ඔබේ සේවාදායකය යම් දිනෙක ගෙන යනු ඇත.

භාවිතා කරන්නේ කෙසේද BIGINT?

අර්ථ දක්වන්න:

CREATE TEMPORARY TABLE good_times (
    a_time BIGINT
)

නිශ්චිත අගයක් ඇතුළු කරන්න:

INSERT INTO good_times VALUES (
    UNIX_TIMESTAMP(CONVERT_TZ("2014-12-03 12:24:54", '+00:00', @@global.time_zone))
);

හෝ ඇත්ත වශයෙන්ම මෙය ඔබගේ යෙදුමෙන් වඩා හොඳය, වැනි:

$statement = $myDB->prepare('INSERT INTO good_times VALUES (?)');
$statement->execute([$someTime->getTimestamp()]);

තෝරන්න:

SELECT a_time FROM good_times;

සාපේක්ෂ වේලාවන් පෙරීම සඳහා ශිල්පීය ක්‍රම තිබේ (පසුගිය දින 30 තුළ තනතුරු තෝරන්න, ලියාපදිංචි වී මිනිත්තු 10 ක් ඇතුළත මිලදී ගත් පරිශීලකයින් සොයා ගන්න) මෙහි විෂය පථයෙන් ඔබ්බට.

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.