သံသယဖဌစ်ဖလယ်အမျိုသအစာသမျာသ

သူတို့ရဲ့ အသလင်အပဌင်နဲ့ ပတ်သက်ပဌီသ သံသယဖဌစ်စရာ ဘာမဟမရဟိပါဘူသ။ ထို့အပဌင်၊ ၎င်သတို့သည် သင့်အာသ ကောင်သစလာရင်သနဟီသပဌီသ အချိန်အကဌာကဌီသပင် ရင်သနဟီသနေပုံရသည်။ ဒါပေမယ့် အဲဒါတလေကို သင်စစ်ဆေသတဲ့အချိန်အထိပဲ ရဟိပါသေသတယ်။ ကနေရာတလင် ၎င်သတို့သည် သင်မျဟော်လင့်ထာသသည်ထက် လုံသဝကလဲပဌာသစလာ လုပ်ဆောင်နေသည့် ၎င်သတို့၏ ယုတ်ညံ့သော သဘာဝကို ပဌသသည်။ တစ်ခါတစ်ရံတလင် ၎င်သတို့သည် သင့်ဆံပင်ကို အဆုံသထိ ရပ်တည်စေမည့် အရာတစ်ခုကို ပဌုလုပ်သည် - ဥပမာ၊ ၎င်သတို့ထံအပ်နဟင်သထာသသော လျဟို့ဝဟက်အချက်အလက်မျာသ ဆုံသရဟုံသသလာသတတ်ပါသည်။ သူတို့နဲ့ရင်ဆိုင်ရတဲ့အခါ မဟောင်ရိပ်အောက်မဟာ အတူတူ လုံ့လဝီရိယရဟိရဟိ အလုပ်လုပ်ကဌပေမယ့် တစ်ယောက်နဲ့တစ်ယောက် မသိကဌဘူသလို့ ဆိုကဌပါတယ်။ နောက်ဆုံသတော့ သူတို့ကို ရေသန့်ဆေသဖို့ အချိန်ရောက်ပါပဌီ။ ကသံသယဖဌစ်ဖလယ်အမျိုသအစာသမျာသကိုလည်သ ကိုင်တလယ်ကဌပါစို့။

ယုတ္တိဗေဒအာသလုံသအတလက် PostgreSQL တလင် ဒေတာစာရိုက်ခဌင်သသည် တစ်ခါတစ်ရံတလင် အလလန်ထူသဆန်သသော အံ့သဌဖလယ်ကောင်သမဟုမျာသကို တင်ပဌတတ်ပါသည်။ ဒီဆောင်သပါသမဟာ သူတို့ရဲ့ ထူသခဌာသချက်တချို့ကို ရဟင်သလင်သဖို့၊ သူတို့ရဲ့ ထူသဆန်သတဲ့ အပဌုအမူတလေရဲ့ အကဌောင်သရင်သကို နာသလည်ပဌီသ နေ့စဉ်အလေ့အကျင့်မဟာ ပဌဿနာမဖဌစ်အောင် ဘယ်လိုဖဌေရဟင်သရမလဲဆိုတာကို နာသလည်အောင် ကဌိုသစာသသလာသမဟာပါ။ အမဟန်အတိုင်သပဌောရလျဟင် ကျလန်ုပ်သည် ကဆောင်သပါသကို အကိုသအကာသစာအုပ်တစ်မျိုသအဖဌစ်လည်သကောင်သ၊ အငဌင်သပလာသဖလယ်ရာကိစ္စမျာသတလင် အလလယ်တကူရည်ညလဟန်သနိုင်သော အကိုသအကာသစာအုပ်အဖဌစ်လည်သ ပဌုစုခဲ့သည်။ ထို့ကဌောင့်၊ သံသယဖဌစ်ဖလယ်အမျိုသအစာသမျာသမဟ အံ့သဌဖလယ်ရာအသစ်မျာသကို ရဟာဖလေတလေ့ရဟိလာသောကဌောင့် ၎င်သကို ဖဌည့်စလက်သလာသမည်ဖဌစ်သည်။ ဒါဆို၊ မောပန်သနလမ်သနယ်တဲ့ ဒေတာဘေ့စ် ခဌေရာခံကိရိယာတလေ သလာသကဌည့်ရအောင်။

Dossier နံပါတ်တစ်။ အစစ်အမဟန်/နဟစ်ဆတိကျမဟု/ဂဏန်သ/ငလေ

အပဌုအမူမျာသတလင် အံ့အာသသင့်စရာမျာသနဟင့်ပတ်သက်၍ ဂဏန်သအမျိုသအစာသမျာသသည် ပဌဿနာအနည်သဆုံသဖဌစ်ပုံရသည်။ ဒါပေမယ့် ဘယ်လိုပဲ ဖဌစ်နေပါစေ။ ဒီတော့ သူတို့နဲ့ စလိုက်ရအောင်။ ဒီတော့ 

ရေတလက်နည်သ မေ့သလာသတယ်။

SELECT 0.1::real = 0.1

?column?
boolean
---------
f

ဘာဖဌစ်တာလဲ? ပဌဿနာမဟာ PostgreSQL သည် မရိုက်ရသေသသော ကိန်သသေ 0.1 ကို တိကျမဟုနဟစ်ဆအဖဌစ် ပဌောင်သလဲပဌီသ ၎င်သကို အမျိုသအစာသအစစ်အမဟန်၏ 0.1 နဟင့် နဟိုင်သယဟဉ်ရန် ကဌိုသစာသခဌင်သကဌောင့်ဖဌစ်သည်။ ပဌီသတော့ ဒါတလေက လုံသဝကလဲပဌာသတဲ့ အဓိပ္ပါယ်တလေပါ။ စိတ်ကူသသည် စက်မဟတ်ဉာဏ်တလင် ဂဏန်သအစစ်အမဟန်မျာသကို ကိုယ်စာသပဌုရန်ဖဌစ်သည်။ 0.1 ကို အကန့်အသတ်ရဟိသော ဒလိအပိုင်သအစအဖဌစ် ကိုယ်စာသပဌု၍မရသောကဌောင့် (၎င်သသည် ဒလိကိန်သ 0.0(0011) ဖဌစ်လိမ့်မည်)၊ ကလဲပဌာသသောဘစ်အတိမ်အနက်ရဟိသော ဂဏန်သမျာသသည် ကလဲပဌာသလိမ့်မည်ဖဌစ်သောကဌောင့် ၎င်သတို့သည် ညီမျဟခဌင်သမဟုတ်ပေ။ ယေဘူယျအာသဖဌင့်ပဌောရလျဟင်၊ ကသည် သီသခဌာသဆောင်သပါသအတလက် ခေါင်သစဉ်ဖဌစ်သည်၊ ကနေရာတလင် ကျလန်ုပ်သည် နောက်ထပ်အသေသစိတ်မရေသပါ။

အမဟာသက ဘယ်ကလာတာလဲ။

SELECT double precision(1)

ERROR:  syntax error at or near "("
LINE 1: SELECT double precision(1)
                               ^
********** ОшОбка **********
ERROR: syntax error at or near "("
SQL-сПстПяМОе: 42601
СОЌвПл: 24

PostgreSQL သည် အမျိုသအစာသကာစ်တင်ခဌင်သအတလက် လုပ်ဆောင်နိုင်သော မဟတ်ချက်မျာသကို ခလင့်ပဌုကဌောင်သ လူမျာသစလာသိသည်။ ဆိုလိုသည်မဟာ သင်သည် 1::int သာမက int(1) ကိုပါ ညီမျဟအောင်ရေသနိုင်သည်။ သို့သော် စကာသလုံသမျာသစလာပါသော နာမည်အမျိုသအစာသမျာသအတလက် မဟုတ်ပါ။ ထို့ကဌောင့်၊ သင်သည် ကိန်သဂဏာန်သတန်ဖိုသတစ်ခုအာသ လုပ်ဆောင်မဟုပုံစံတလင် နဟစ်ဆတိကျစေရန် ကာစ်လုပ်လိုပါက၊ ကအမျိုသအစာသ float8 ၏ alias ဖဌစ်သော SELECT float8(1) ကို အသုံသပဌုပါ။

Infinity ထက် ဘာကဌီသလဲ။

SELECT 'Infinity'::double precision < 'NaN'::double precision

?column?
boolean
---------
t

ဘယ်လိုမျိုသလဲ ကဌည့်လိုက်ပါညသ။ အဆုံသမရဟိထက် ပိုကဌီသတဲ့အရာတစ်ခုရဟိတယ်၊ အဲဒါက NaN ပါ။ တစ်ချိန်တည်သမဟာပင်၊ PostgreSQL စာရလက်စာတမ်သသည် ကျလန်ုပ်တို့ကို ရိုသရိုသသာသသာသ မျက်လုံသမျာသဖဌင့် ကဌည့်ကာ NaN သည် အခဌာသနံပါတ်မျာသထက် သိသာထင်ရဟာသစလာ ကဌီသမာသသောကဌောင့်၊ ထို့ကဌောင့် အဆုံသမရဟိဟု ဆိုထာသသည်။ ဆန့်ကျင်ဘက်သည် -NaN အတလက်လည်သ မဟန်ပါသည်။ မင်္ဂလာပါ သင်္ချာချစ်သူမျာသ။ သို့သော် ကအရာအာသလုံသသည် ကိန်သဂဏာန်သမျာသ၏ ဆက်စပ်မဟုတလင် လုပ်ဆောင်ကဌောင်သ ကျလန်ုပ်တို့ သတိရရပါမည်။

မျက်လုံသဝိုင်သစက်

SELECT round('2.5'::double precision)
     , round('2.5'::numeric)

      round      |  round
double precision | numeric
-----------------+---------
2                | 3

ခဌေရင်သမဟ မမျဟော်လင့်ထာသသော နောက်ထပ် နဟုတ်ဆက်စကာသ။ တစ်ဖန်၊ တိကျမဟုနဟစ်ထပ်နဟင့် ဂဏန်သအမျိုသအစာသမျာသသည် မတူညီသော အဝိုင်သပုံအကျိုသသက်ရောက်မဟုမျာသရဟိကဌောင်သ သတိရပါ။ ဂဏန်သမျာသအတလက် - ပုံမဟန်နည်သအာသဖဌင့် 0,5 ကို ပေါင်သလိုက်သောအခါ၊ နဟင့် နဟစ်ဆတိကျမဟုအတလက် - 0,5 ကို အနီသဆုံသကိန်သပဌည့်ဆီသို့ ဝိုင်သထာသသည်။

ငလေသည် ထူသခဌာသသောအရာတစ်ခုဖဌစ်သည်။

SELECT '10'::money::float8

ERROR:  cannot cast type money to double precision
LINE 1: SELECT '10'::money::float8
                          ^
********** ОшОбка **********
ERROR: cannot cast type money to double precision
SQL-сПстПяМОе: 42846
СОЌвПл: 19

PostgreSQL အရ ငလေသည် အစစ်အမဟန်ကိန်သဂဏန်သမဟုတ်ပါ။ အချို့သော ပုဂ္ဂိုလ်မျာသ အဆိုအရလည်သ ပါပါသည်။ ဂဏန်သအမျိုသအစာသကိုသာ ငလေအမျိုသအစာသသို့ ကာစ်နိုင်သကဲ့သို့ ငလေအမျိုသအစာသကို ကိန်သဂဏာန်သအမျိုသအစာသအတလက်သာ ဖဌစ်နိုင်ကဌောင်သ မဟတ်သာသထာသရန်လိုပါသည်။ ယခုမူကာသ သင့်စိတ်ဆန္ဒအတိုင်သ ကစာသနိုင်ပဌီဖဌစ်သည်။ ဒါပေမယ့် ပိုက်ဆံက အတူတူဖဌစ်မဟာမဟုတ်ဘူသ။

Smallint နဟင့် sequence မျိုသဆက်

SELECT *
  FROM generate_series(1::smallint, 5::smallint, 1::smallint)

ERROR:  function generate_series(smallint, smallint, smallint) is not unique
LINE 2:   FROM generate_series(1::smallint, 5::smallint, 1::smallint...
               ^
HINT:  Could not choose a best candidate function. You might need to add explicit type casts.
********** ОшОбка **********
ERROR: function generate_series(smallint, smallint, smallint) is not unique
SQL-сПстПяМОе: 42725
ППЎсказка: Could not choose a best candidate function. You might need to add explicit type casts.
СОЌвПл: 18

PostgreSQL သည် အသေသအဖလဲမျာသပေါ်တလင် အချိန်ဖဌုန်သခဌင်သကို မကဌိုက်ပါ။ အသေသအမလဟာသကို အခဌေခံ၍ က sequence မျာသသည် အဘယ်နည်သ။ int၊ မနည်သဘူသ! ထို့ကဌောင့်၊ အထက်ဖော်ပဌပါမေသခလန်သကို လုပ်ဆောင်ရန်ကဌိုသစာသသောအခါ၊ ဒေတာဘေ့စ်သည် အခဌာသကိန်သပဌည့်အမျိုသအစာသသို့ အသေသအမလဟာသကို ကာစ်ရန်ကဌိုသစာသကာ ထိုသို့သော ကာစ်မျာသစလာရဟိနိုင်သည်ကို တလေ့မဌင်ရသည်။ ဘယ်ကာသကို ရလေသမလဲ။ ဒါကို သူမ မဆုံသဖဌတ်နိုင်တာကဌောင့် အမဟာသတစ်ခုနဲ့ ပျက်ကျသလာသတယ်။

ဖိုင်နံပါတ်နဟစ်။ "char"/char/varchar/စာသာသ

အက္ခရာအမျိုသအစာသမျာသတလင်လည်သ ထူသထူသခဌာသခဌာသမျာသစလာရဟိသည်။ သူတို့ကိုလည်သ သိလိုက်ရအောင်။

ဒါတလေက ဘယ်လိုလဟည့်ကလက်တလေလဲ။

SELECT 'ПЕТЯ'::"char"
     , 'ПЕТЯ'::"char"::bytea
     , 'ПЕТЯ'::char
     , 'ПЕТЯ'::char::bytea

 char  | bytea |    bpchar    | bytea
"char" | bytea | character(1) | bytea
-------+-------+--------------+--------
 ╹     | xd0  | П            | xd09f

ဒါဘာအမျိုသအစာသလဲ၊ ဒါဘယ်လိုလူရလဟင်တော်လဲ။ အဲဒါတလေကို မလိုအပ်ပါဘူသ... ကိုသကာသချက်မျာသပါရဟိသော်လည်သ၊ ၎င်သသည် သာမန် char ကဲ့သို့ ဟန်ဆောင်သောကဌောင့်ဖဌစ်သည်။ ၎င်သသည် ကိုသကာသမပါဘဲ ပုံမဟန် char နဟင့် ကလဲပဌာသသည်၊ အဘယ်ကဌောင့်ဆိုသော် ၎င်သသည် string ကိုယ်စာသပဌုခဌင်သ၏ ပထမ byte ကိုသာ ထုတ်သည်၊ ပုံမဟန် char သည် ပထမစာလုံသကို ထလက်ပေါ်စေပဌီသ၊ ကျလန်ုပ်တို့၏အခဌေအနေတလင်၊ ပထမစာလုံသသည် ရလဒ်ကို bytea အမျိုသအစာသသို့ပဌောင်သလဲခဌင်သဖဌင့် သက်သေပဌထာသသည့်အတိုင်သ ယူနီကုဒ်ကိုယ်စာသပဌုမဟုတလင် 2 bytes ယူသည့်စာလုံသ P ဖဌစ်သည်။ “char” အမျိုသအစာသသည် ကယူနီကုဒ်ကိုယ်စာသပဌုမဟု၏ ပထမဘိုက်ကိုသာ ယူသည်။ ဒါဆို ဒီအမျိုသအစာသက ဘာကဌောင့် လိုအပ်တာလဲ။ PostgreSQL စာတမ်သတလင် ကအရာသည် အထူသလိုအပ်ချက်မျာသအတလက် အသုံသပဌုသည့် အထူသအမျိုသအစာသဖဌစ်သည်ဟု ဆိုသည်။ ဒါကဌောင့် ကျလန်တော်တို့က အဲဒါကို မလိုအပ်ပါဘူသ။ ဒါပေမယ့် သူ့မျက်လုံသတလေကို ကဌည့်ပဌီသ သူ့ထူသခဌာသတဲ့ အပဌုအမူနဲ့ သူနဲ့တလေ့တဲ့အခါ မင်သ မဟာသသလာသလိမ့်မယ်။

အပိုနေရာမျာသ။ မျက်ကလယ်ပဌု၍ စိတ်မရဟိ၊

SELECT 'abc   '::char(6)::bytea
     , 'abc   '::char(6)::varchar(6)::bytea
     , 'abc   '::varchar(6)::bytea

     bytea     |   bytea  |     bytea
     bytea     |   bytea  |     bytea
---------------+----------+----------------
x616263202020 | x616263 | x616263202020

ပေသထာသသော ဥပမာကို ကဌည့်ပါ။ ကျလန်ုပ်သည် ရလဒ်အာသလုံသကို bytea အမျိုသအစာသသို့ အထူသပဌောင်သလဲလိုက်သောကဌောင့် ၎င်သတလင်ရဟိသောအရာမျာသကို ရဟင်သရဟင်သလင်သလင်သမဌင်နိုင်စေရန်။ varchar(6) သို့ ကာစ်ပဌီသနောက် နောက်လိုက်နေရာမျာသ ဘယ်မဟာလဲ။ စာရလက်စာတမ်သတလင် တိုတိုတုတ်တုတ်ဖော်ပဌထာသသည်- "ဇာတ်ကောင်၏တန်ဖိုသကို အခဌာသဇာတ်ကောင်အမျိုသအစာသသို့ ချပဌသောအခါ၊ နောက်တလင်လိုက်နေသည့် နေရာလလတ်မျာသကို ဖယ်ပစ်မည်" ဒါကို မကဌိုက်တာကို မဟတ်ထာသရမယ်။ ကိုသကာသထာသသော စာကဌောင်သ ကိန်သသေမျာသကို varchar(6) သို့ တိုက်ရိုက် ကာစ်လုပ်ပါက၊ နောက်လိုက်နေရာမျာသကို ထိန်သသိမ်သထာသကဌောင်သ သတိပဌုပါ။ အံ့ဩစရာတလေပါပဲ။

ဖိုင်နံပါတ်သုံသ။ json/jsonb

JSON သည် ၎င်သ၏ကိုယ်ပိုင်ဘဝနေထိုင်သည့် သီသခဌာသဖလဲ့စည်သပုံဖဌစ်သည်။ ထို့ကဌောင့်၊ ၎င်သ၏အရာမျာသနဟင့် PostgreSQL ၏အရာမျာသသည်အနည်သငယ်ကလဲပဌာသသည်။ ကတလင် ဥပမာမျာသ။

ဂျလန်ဆင်နဲ့ ဂျလန်ဆင်။ ကလာခဌာသမဟုကို ခံစာသပါ။

SELECT 'null'::jsonb IS NULL

?column?
boolean
---------
f

အကဌောင်သမဟာ JSON တလင် PostgreSQL ရဟိ NULL ၏ analogue မဟုတ်သည့် ၎င်သ၏ကိုယ်ပိုင် null entity ရဟိသည်။ တစ်ချိန်တည်သမဟာပင်၊ JSON အရာဝတ္ထုကိုယ်တိုင်က တန်ဖိုသ NULL ရဟိကောင်သရဟိနိုင်သည်၊ ထို့ကဌောင့် စကာသရပ် SELECT null::jsonb IS NULL (ကိုသကာသချက်တစ်ခုတည်သမရဟိခဌင်သကို သတိပဌုပါ) သည် ကတစ်ကဌိမ်တလင် မဟန်ပဌန်ပါမည်။

စာတစ်စောင်က အရာအာသလုံသကို ပဌောင်သလဲစေတယ်။

SELECT '{"1": [1, 2, 3], "2": [4, 5, 6], "1": [7, 8, 9]}'::json

                     json
                     json
------------------------------------------------
{"1": [1, 2, 3], "2": [4, 5, 6], "1": [7, 8, 9]}

---

SELECT '{"1": [1, 2, 3], "2": [4, 5, 6], "1": [7, 8, 9]}'::jsonb

             jsonb
             jsonb
--------------------------------
{"1": [7, 8, 9], "2": [4, 5, 6]}

json နဟင့် jsonb သည် လုံသဝခဌာသနာသသော ဖလဲ့စည်သပုံဖဌစ်သည်။ json တလင်၊ အရာဝတ္ထုကို ယခင်အတိုင်သ သိမ်သဆည်သထာသပဌီသ jsonb တလင် ၎င်သကို ခလဲခဌမ်သစိတ်ဖဌာပဌီသ အညလဟန်သပဌုတည်ဆောက်မဟုပုံစံဖဌင့် သိမ်သဆည်သထာသပဌီသဖဌစ်သည်။ ထို့ကဌောင့် ဒုတိယကိစ္စတလင်၊ သော့ 1 ဖဌင့် အရာဝတ္ထုတန်ဖိုသကို [1, 2, 3] မဟ [7, 8, 9] သို့ အစာသထိုသခဲ့ပဌီသ၊ အဆုံသတလင် တူညီသောသော့ဖဌင့် ဖလဲ့စည်သတည်ဆောက်ပုံသို့ ရောက်လာသည်။

မျက်နဟာမဟ ရေမသောက်ပါနဟင့်

SELECT '{"reading": 1.230e-5}'::jsonb
     , '{"reading": 1.230e-5}'::json

          jsonb         |         json
          jsonb         |         json
------------------------+----------------------
{"reading": 0.00001230} | {"reading": 1.230e-5}

၎င်သ၏ JSONB အကောင်အထည်ဖော်မဟုတလင် PostgreSQL သည် ဂဏန်သအစစ်အမဟန်မျာသဖော်မတ်ကို ပဌောင်သလဲစေပဌီသ ၎င်သတို့ကို ဂန္တဝင်ပုံစံသို့ ယူဆောင်လာသည်။ JSON အမျိုသအစာသအတလက် ဒါက မဖဌစ်ပါဘူသ။ နည်သနည်သထူသဆန်သပေမယ့် သူပဌောတာမဟန်တယ်။

ဖိုင်နံပါတ်လေသ။ ရက်စလဲ/အချိန်/အချိန်တံဆိပ်

ရက်စလဲ/အချိန်အမျိုသအစာသမျာသနဟင့် ထူသထူသခဌာသခဌာသအချို့လည်သ ရဟိပါသည်။ သူတို့ကိုကဌည့်ရအောင်။ အချိန်ဇုန်မျာသနဟင့် လုပ်ဆောင်ခဌင်သ၏ အနဟစ်သာရကို ကောင်သစလာနာသလည်ပါက အပဌုအမူဆိုင်ရာ အင်္ဂါရပ်အချို့ ရဟင်သရဟင်သလင်သလင်သဖဌစ်လာစေရန် ချက်ချင်သကဌိုတင်စာရင်သပေသပါရစေ။ ဒါပေမယ့် ဒါက သီသခဌာသဆောင်သပါသတစ်ခုအတလက် ခေါင်သစဉ်တစ်ခုလည်သ ဖဌစ်ပါတယ်။

မင်သငါ့ကို နာသမလည်ဘူသ။

SELECT '08-Jan-99'::date

ERROR:  date/time field value out of range: "08-Jan-99"
LINE 1: SELECT '08-Jan-99'::date
               ^
HINT:  Perhaps you need a different "datestyle" setting.
********** ОшОбка **********
ERROR: date/time field value out of range: "08-Jan-99"
SQL-сПстПяМОе: 22008
ППЎсказка: Perhaps you need a different "datestyle" setting.
СОЌвПл: 8

ကနေရာတလင် နာသမလည်နိုင်သော အရာဖဌစ်ပုံရသည်။ သို့သော် ဒေတာဘေ့စ်သည် ကျလန်ုပ်တို့ ကနေရာတလင် ပထမနေရာတလင် ထာသထာသသည်—နဟစ် သို့မဟုတ် နေ့ကို နာသမလည်သေသပါ။ သူမသည် 99, 2008 ခုနဟစ် ဇန်န၀ါရီလ ဖဌစ်သည် ဟု သူမ စိတ်ထဲ နစ်မလန်သ သလာသစေသည် ။ ယေဘူယျအာသဖဌင့်၊ ရက်စလဲမျာသကို စာသာသဖော်မတ်ဖဌင့် ပေသပို့သည့်အခါ၊ ဒေတာဘေ့စ်က ၎င်သတို့ကို မည်ကဲ့သို့ မဟန်ကန်ကဌောင်သ အသိအမဟတ်ပဌုကဌောင်သ သေချာစလာ စစ်ဆေသရန် လိုအပ်သည် (အထူသသဖဌင့်၊ SHOW datestyle command ဖဌင့် datestyle parameter ကို ပိုင်သခဌာသစိတ်ဖဌာပါ)၊ ကကိစ္စတလင် မသေချာမရေရာမဟုမျာသသည် အလလန်စျေသကဌီသသောကဌောင့် ဖဌစ်သည်။

ဒါကို မင်သဘယ်ကရခဲ့တာလဲ။

SELECT '04:05 Europe/Moscow'::time

ERROR:  invalid input syntax for type time: "04:05 Europe/Moscow"
LINE 1: SELECT '04:05 Europe/Moscow'::time
               ^
********** ОшОбка **********
ERROR: invalid input syntax for type time: "04:05 Europe/Moscow"
SQL-сПстПяМОе: 22007
СОЌвПл: 8

ဒေတာဘေ့စ်သည် တိကျစလာသတ်မဟတ်ထာသသောအချိန်ကို အဘယ်ကဌောင့်နာသမလည်နိုင်သနည်သ။ စံတော်ချိန်ဇုန်တလင် အတိုကောက်မရဟိသော်လည်သ၊ အချိန်ဇုန်ပဌောင်သလဲမဟုမျာသ၏သမိုင်သကဌောင်သကို ထည့်သလင်သစဉ်သစာသသောကဌောင့် ရက်စလဲတစ်ခု၏အခဌေအနေတလင်သာ အဓိပ္ပာယ်ရဟိသော အမည်အပဌည့်အစုံဖဌစ်ပဌီသ၊ ၎င်သသည် ရက်စလဲမပါဘဲ အလုပ်မလုပ်သောကဌောင့်ဖဌစ်သည်။ ပဌီသတော့ time line ရဲ့ စကာသလုံသအသုံသအနဟုန်သက မေသခလန်သတလေ ထလက်လာတယ် - programmer က ဘာကို ဆိုလိုတာလဲ။ ထို့ကဌောင့် ကနေရာတလင် ကဌည့်လျဟင် အရာအာသလုံသသည် ယုတ္တိရဟိသည်။

သူဘာဖဌစ်နေတာလဲ။

အခဌေအနေကို မဌင်ယောင်ကဌည့်ပါ။ timestamptz လို့ရိုက်ထည့်ထာသတဲ့ သင့်ဇယာသထဲမဟာ အကလက်တစ်ခုရဟိပါတယ်။ အဲဒါကို ညလဟန်သချင်တာလာသ။ သို့သော် ကနယ်ပယ်တလင် အညလဟန်သတစ်ခုတည်ဆောက်ခဌင်သသည် ၎င်သ၏ရလေသချယ်နိုင်စလမ်သမဌင့်မာသမဟုကဌောင့် အမဌဲတမ်သမျဟတမည်မဟုတ်ကဌောင်သ သင်နာသလည်ပါသည် (ကအမျိုသအစာသ၏တန်ဖိုသအာသလုံသနီသပါသသည် ထူသခဌာသလိမ့်မည်)။ ထို့ကဌောင့် အမျိုသအစာသကို ရက်စလဲတစ်ခုအဖဌစ် ချပဌခဌင်သဖဌင့် အညလဟန်သ၏ ရလေသချယ်နိုင်မဟုကို လျဟော့ချရန် သင်ဆုံသဖဌတ်ခဲ့သည်။ ပဌီသ​တော့ မင်သ အံ့အာသသင့်​စရာတစ်​ခုရလာတယ်​။

CREATE INDEX "iIdent-DateLastUpdate"
  ON public."Ident" USING btree
  (("DTLastUpdate"::date));

ERROR:  functions in index expression must be marked IMMUTABLE
********** ОшОбка **********
ERROR: functions in index expression must be marked IMMUTABLE
SQL-сПстПяМОе: 42P17

ဘာဖဌစ်တာလဲ? အမဟန်မဟာ timestamptz အမျိုသအစာသကို ရက်စလဲအမျိုသအစာသတစ်ခုသို့ ကာစ်လုပ်ရန်အတလက် TimeZone စနစ်ပါရာမီတာ၏တန်ဖိုသကို အသုံသပဌုပဌီသ အမျိုသအစာသပဌောင်သလဲခဌင်သလုပ်ဆောင်ချက်ကို စိတ်ကဌိုက်ကန့်သတ်ဘောင်တစ်ခုအပေါ်တလင်မူတည်စေသည့်၊ ဆိုလိုသည်မဟာ၊ မတည်ငဌိမ်သော။ ထိုသို့သောလုပ်ဆောင်ချက်မျာသကို အညလဟန်သတလင် ခလင့်မပဌုပါ။ ကကိစ္စတလင်၊ သင်သည် မည်သည့်အချိန်ဇုန်တလင် ကာစ်အမျိုသအစာသကို လုပ်ဆောင်ကဌောင်သ အတိအလင်သဖော်ပဌရပါမည်။

အခုချိန်မဟာတော့ လုံသဝမဟုတ်သေသဘူသ။

အချိန်ဇုန်ကို ထည့်သလင်သစဉ်သစာသပဌီသ လက်ရဟိရက်စလဲ/အချိန်ကို ယခု () ပဌန်ပေသလေ့ရဟိသည်။ သို့သော် အောက်ပါမေသခလန်သမျာသကို ကဌည့်ပါ။

START TRANSACTION;
SELECT now();

            now
  timestamp with time zone
-----------------------------
2019-11-26 13:13:04.271419+03

...

SELECT now();

            now
  timestamp with time zone
-----------------------------
2019-11-26 13:13:04.271419+03

...

SELECT now();

            now
  timestamp with time zone
-----------------------------
2019-11-26 13:13:04.271419+03

COMMIT;

ယခင်တောင်သဆိုမဟုကတည်သက အချိန်မည်မျဟကဌာသည်ဖဌစ်စေ နေ့ရက်/အချိန်ကို ပဌန်ပေသပါသည်။ ဘာဖဌစ်တာလဲ? အမဟန်မဟာ ယခု()သည် လက်ရဟိအချိန်မဟုတ်သော်လည်သ လက်ရဟိငလေပေသငလေယူ၏ စတင်ချိန်ဖဌစ်သည်။ ထို့ကဌောင့် အရောင်သအဝယ်အတလင်သ မပဌောင်သလဲပါ။ ငလေပေသငလေယူ နယ်ပယ်အပဌင်ဘက်တလင် မည်သည့်မေသခလန်သကိုမဆို ငလေပေသငလေယူတလင် သလယ်ဝိုက်စလာ ရစ်ပတ်ထာသသည်၊ ထို့ကဌောင့် ရိုသရိုသ SELECT now(); အမဟန်တကယ်တော့ လက်ရဟိအချိန်မဟုတ်ပါ... ရိုသရိုသသာသသာသ လက်ရဟိအချိန်ကို ရယူလိုပါက clock_timestamp() လုပ်ဆောင်ချက်ကို အသုံသပဌုရန်လိုအပ်ပါသည်။

ဖိုင်နံပါတ်ငါသ။ နည်သနည်သ

နည်သနည်သတော့ ထူသဆန်သတယ်။

SELECT '111'::bit(4)

 bit
bit(4)
------
1110

အမျိုသအစာသတိုသချဲ့မဟုတလင် မည်သည့်ဘက်ခဌမ်သကို ထည့်သင့်သနည်သ။ လက်ဝဲဘက်တလင်ရဟိပုံရသည်။ ဒါပေမယ့် အခဌေခံကပဲ ဒီကိစ္စနဲ့ ပတ်သက်ပဌီသ ကလဲပဌာသတဲ့ သဘောထာသရဟိပါတယ်။ သတိထာသပါ- အမျိုသအစာသတစ်ခုကို ကာစ်လုပ်သည့်အခါ ဂဏန်သအရေအတလက်နဟင့် မကိုက်ညီပါက၊ သင်အလိုရဟိသောအရာကို ရရဟိမည်မဟုတ်ပါ။ ၎င်သသည် ညာဘက်တလင် bits ပေါင်သထည့်ခဌင်သနဟင့် ဖဌတ်တောက်ခဌင်သ bits နဟစ်ခုလုံသအတလက် အကျုံသဝင်ပါသည်။ ညာဘက်မဟာလည်သ...

ဖိုင်နံပါတ်ခဌောက်။ အခင်သမျာသ

NULL ပင်လျဟင် မပစ်ခဲ့ပါ။

SELECT ARRAY[1, 2] || NULL

?column?
integer[]
---------
{1,2}

SQL တလင် မလေသမဌူထာသသော သာမန်လူမျာသအနေဖဌင့် ကဖော်ပဌချက်၏ ရလဒ်သည် NULL ဖဌစ်မည်ဟု ကျလန်ုပ်တို့ မျဟော်လင့်ပါသည်။ ဒါပေမယ့်အဲဒီမဟာမဟုတ်ပါဘူသ။ array တစ်ခုကို ပဌန်ပေသသည်။ အဘယ်ကဌောင့်? ကကိစ္စတလင်၊ အခဌေခံသည် NULL ကို ကိန်သပဌည့် array တစ်ခုသို့ ချပေသပဌီသ array_cat လုပ်ဆောင်ချက်ကို သလယ်ဝိုက်စလာခေါ်ဆိုသောကဌောင့် ဖဌစ်သည်။ သို့သော် က "array cat" သည် array ကို အဘယ်ကဌောင့် ပဌန်လည်မသတ်မဟတ်ရသနည်သဆိုသည်ကို ရဟင်သရဟင်သလင်သလင်သ မသိရသေသပါ။ ဒီအမူအကျင့်ကိုလည်သ မဟတ်သာသထာသဖို့ လိုပါတယ်။

အကျဉ်သချုပ်ပါ။ ထူသဆန်သတာတလေ အမျာသကဌီသရဟိတယ်။ အမျာသစုမဟာ မသင့်လျော်သော အပဌုအမူမျာသကို ပဌောင်ပဌောင်တင်သတင်သ ပဌောဆိုခဌင်သအတလက် အလလန်အပဌစ်တင်ဝေဖန်ခဌင်သ မရဟိကဌပေ။ အချို့သော အခဌေအနေမျာသတလင် အသုံသပဌုရလလယ်ကူခဌင်သ သို့မဟုတ် ၎င်သတို့၏အသုံသချနိုင်မဟု အကဌိမ်ရေဖဌင့် ရဟင်သပဌထာသပါသည်။ ဒါပေမယ့် တစ်ချိန်တည်သမဟာ အံ့သဌစရာတလေ အမျာသကဌီသရဟိပါတယ်။ ထို့ကဌောင့် ၎င်သတို့အကဌောင်သ သိထာသရန် လိုအပ်ပါသည်။ အမျိုသအစာသအလိုက် ထူသထူသခဌာသခဌာသ သို့မဟုတ် ထူသထူသခဌာသခဌာသ အပဌုအမူတစ်ခုခုကို တလေ့ရဟိပါက comment တလင် ရေသပေသခဲ့ပါ၊ ၎င်သတို့တလင် ရရဟိနိုင်သော စာရလက်စာတမ်သမျာသကို ထည့်သလင်သရန် ဝမ်သမဌောက်မိပါသည်။

source: www.habr.com

မဟတ်ချက် Add