新聞中心
在現(xiàn)代計(jì)算機(jī)科技的發(fā)展中,時間數(shù)據(jù)的處理越來越重要。在數(shù)據(jù)庫中,時間戳是一個非常常見的數(shù)據(jù)類型,它可以表示一個特定事件發(fā)生的的時間。

成都創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括陽谷網(wǎng)站建設(shè)、陽谷網(wǎng)站制作、陽谷網(wǎng)頁制作以及陽谷網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,陽谷網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到陽谷省份的部分城市,未來相信會繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
UTC時間(協(xié)調(diào)世界時)是一種標(biāo)準(zhǔn)的時間格式,它與世界上每個地方的時間相同。這意味著,你可以在用UTC時間做基準(zhǔn)的同時,在全球訪問同樣的時間數(shù)據(jù)。如果您想在數(shù)據(jù)庫中存儲這個標(biāo)準(zhǔn)時間格式,您需要考慮幾個關(guān)鍵點(diǎn)。
需要明確UTC時間的格式。UTC時間以0時區(qū)的時間格式為基準(zhǔn),格式為:“YYYY-MM-DDThh:mm:ss.sssZ”。其中,“T”代表時間部分的分隔符,“Z”代表時間按照UTC時間進(jìn)行序列化。需注意,日期和時間之間分隔符可以替換為空格,這不會改變時間的值。
需要確保數(shù)據(jù)庫中存儲的UTC時間是正確的。在存儲UTC時間時,需要將其轉(zhuǎn)換為UTC時間戳。UTC時間戳在Java語言中是使用Long類型進(jìn)行存儲的。如果您使用其他編程語言或框架,請查閱相關(guān)文檔進(jìn)行確認(rèn)。在轉(zhuǎn)換之前,應(yīng)該先檢查該時間是否已經(jīng)是UTC時間戳,如果不是,則首先要將其轉(zhuǎn)換為UTC時間戳。
如何在常見的數(shù)據(jù)庫中存儲UTC時間?
MYSQL數(shù)據(jù)庫
在MYSQL中存儲UTC時間戳,需要將其存儲為整數(shù)類型,例如使用bigint類型。以下是一個示例創(chuàng)建表的語句:
CREATE TABLE `example_table` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`event_time` bigint(20) unsigned NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900__ci;
在INSERT語句中插入時間,需要將其轉(zhuǎn)換為UTC時間戳。
INSERT INTO `example_table` (`event_time`) VALUES (UNIX_TIMESTAMP(UTC_TIMESTAMP()));
在查詢中,可以使用FROM_UNIXTIME函數(shù)將時間戳轉(zhuǎn)換為日期格式。
SELECT FROM_UNIXTIME(`event_time`) FROM `example_table`;
在MYSQL中,DATE_ADD函數(shù)可以用于在SELECT查詢中將時間戳轉(zhuǎn)換為UTC時間。
SELECT DATE_ADD(‘1970-01-01 00:00:00’, INTERVAL `event_timestamp` SECOND) FROM `example_table`;
PostgreSQL數(shù)據(jù)庫
在PostgreSQL中,可以使用TIMESTAMP WITH TIME ZONE數(shù)據(jù)類型來存儲UTC時間。以下是一個示例創(chuàng)建表的語句:
CREATE TABLE `example_table` (
`id` SERIAL PRIMARY KEY,
`event_time` TIMESTAMP WITH TIME ZONE NOT NULL
);
在INSERT語句中,可以使用CURRENT_TIMESTAMP和SET TIME ZONE語句來插入UTC時間。
INSERT INTO `example_table` (`event_time`) VALUES
(CURRENT_TIMESTAMP AT TIME ZONE ‘UTC’);
在SELECT查詢中,您可以使用AT TIME ZONE和TO_CHAR函數(shù)將UTC時間轉(zhuǎn)換為本地時間。
SELECT TO_CHAR(`event_time` AT TIME ZONE ‘Asia/Shangh’, ‘YYYY-MM-DD hh:mm:ss’)
FROM `example_table`;
Oracle數(shù)據(jù)庫
在Oracle數(shù)據(jù)庫中,建議使用TIMESTAMP WITH TIMEZONE數(shù)據(jù)類型來存儲UTC時間。以下是一個示例創(chuàng)建表的語句:
CREATE TABLE `example_table` (
`event_time` TIMESTAMP(0) WITH TIME ZONE NOT NULL
);
在INSERT語句中,可以使用SYS_EXTRACT_UTC函數(shù)插入UTC時間。
INSERT INTO `example_table` (`event_time`) VALUES
(FROM_TZ(TO_TIMESTAMP(SYSDATE), ‘UTC’));
在SELECT查詢中,您可以使用SYS_EXTRACT_UTC函數(shù)將TIMESTAMP WITH TIMEZONE轉(zhuǎn)換為UTC時間。
SELECT SYS_EXTRACT_UTC(`event_time`) FROM `example_table`;
結(jié)論
不論您使用哪種數(shù)據(jù)庫,存儲UTC時間的更佳方法都是將其保存為UTC時間戳,并在需要時將其轉(zhuǎn)換為日期時間。此外,在將時間戳轉(zhuǎn)換為日期時間時,需要注意時間戳是以秒為單位保存的,精確到秒。因此,在您需要更高精度的時間數(shù)據(jù)時,需要選擇其他的解決方案。
成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián),建站經(jīng)驗(yàn)豐富以策略為先導(dǎo)10多年以來專注數(shù)字化網(wǎng)站建設(shè),提供企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),響應(yīng)式網(wǎng)站制作,設(shè)計(jì)師量身打造品牌風(fēng)格,熱線:028-86922220mysql中自動插入時間的格式。 我使用mysql 數(shù)據(jù)庫中設(shè)置,當(dāng)有一條數(shù)據(jù)插入的時候,會自動插入當(dāng)前時間…
DATE() 日期。格式:YYYY-MM-DD
注釋:支持的范圍是從 ” 到 ”
DATETIME() *日期和時間的組合。格式:YYYY-MM-DD HH:MM:SS
注釋:支持的范圍是從 ‘:00:00’ 到 ‘:59:59’
TIMESTAMP() *時間戳。TIMESTAMP 值使用 Unix 紀(jì)元(‘:00:00’ UTC) 至今的描述來存儲。寬灶格式:YYYY-MM-DD HH:MM:SS
注釋:支持的范圍是從 ‘:00:01’ UTC 到慎冊扮 ‘:14:07’ UTC
TIME() 時間。格式:HH:MM:SS 注釋:支持的范圍是從 ‘-838:59:59’ 到姿橘 ‘838:59:59’
mysql> SELECT
-> DATE_FORMAT(NOW(), ‘%m-%d’ ) A
看看執(zhí)行是否正常.
正常的話, 就把 NOW() 替換為你表里面的字圓旁銷段名字。 后面再 FROM 你的表。
第二個參數(shù):
%W 星期名字(Sunday……Saturday)
%D 有英語前綴的月份的日期(1st, 2nd, 3rd, 等等。)
%Y 年, 數(shù)字, 4 位
%y 年, 數(shù)字, 2 位
%a 縮寫的星期名字(Sun……Sat)
%d 月份中的天數(shù), 數(shù)字啟高(00……31)
%e 月份中的天數(shù), 數(shù)字(0……31)
%m 月, 數(shù)字(01……12)
%c 月, 數(shù)字(1……12)
%b 縮寫的月份名字(Jan……Dec)
%j 一年中的天數(shù)(001……366)
%H 小時(00……23)
%k 小時(0……23)
%h 小時(01……12)
%I 小時(01……12)
%l 小時(1……12)
%i 分鐘, 數(shù)字(00……59)
%r 時間,12 小時(hh:mm:ss M)
%T 時間,24 小時(hh:mm:ss)
%S 秒(00……59)
%s 秒(00……59)
%p AM或PM
%w 一個星期中的天數(shù)(0=Sunday ……6=Saturday )
%U 星期(0……52), 這里星期天是星期的之一天
%u 星期橘游(0……52), 這里星期一是星期的之一天
%% 一個文字“%”。
所有的其他字符不做解釋被復(fù)制到結(jié)果中。
隨著 MySQL 8.0.16 的發(fā)布,我們?yōu)?MGR 添加了一些功能,以增強(qiáng)其高可用性。其中一個功能是能夠在某些情況下啟用已離開組的成員自動重新加入,而無需用戶干預(yù)。
為了理解這個功能的好處以及如何使用它,我們將快速查看它背后的概念以及它首先存在的動機(jī)。
介紹
MGR 允許 MySQL 用戶輕松管理高可用組,并完成保證系統(tǒng)高可用所需的所有特征,例如容錯或故障檢測。
MGR 中提供的基本保證之一是該組呈現(xiàn)給用戶的是一個不可分割的整體,這意味著一旦成員加入或離開該組,該更改將立即被其他成員得知。默認(rèn)情況下,組內(nèi)的數(shù)據(jù)本身最終是一致的,盡管可以被修改。為了實(shí)現(xiàn)這種保證,MGR 使用組成員服務(wù),以及通過一致性算法檢測有沖突的事務(wù)并中止它們。MGR 的這一方面超出了本文的范圍,與成員自動重新加入功能并不完全相關(guān),本文不作贅述。
組內(nèi)新成員必須符合一些條件。其中新成員需要在事務(wù)方面趕上組進(jìn)度(是通過選擇組內(nèi)一個成員來將已處理的事務(wù)流式傳輸給他,在 MGR 中稱坦塌為“捐贈”)。最后,只要在此“分布式恢復(fù)”過程中沒有遇到任何錯誤,組內(nèi)新成員將被聲明為 ONLINE 狀態(tài)。
MGR 依靠組通信層 (GCS) 來管理組。該層實(shí)現(xiàn)了用于解決沖突事務(wù)的一致性算法,并強(qiáng)制執(zhí)行一些通信特性。對于實(shí)現(xiàn)前面提到的組的不可分割視圖,這些特性至關(guān)重要,如消息的總順序、安全傳遞或視圖同步等。
GCS 需要能夠檢測組中哪些成員失效或看起來失效。一旦這些成員被檢測為失效,就將其從該組中移除,以便保持該組正常使用。為此 GCS 在每個成員中引入了一個故障檢測器,用于分析組內(nèi)交換的消息。如果它在一段時間內(nèi)沒有收到來自指定成員的消息,則故障檢測器將對該成員產(chǎn)生“懷疑”,并認(rèn)為該成員可能已經(jīng)失效。成員從“懷疑”到真正失效的等待時間是可以配置的。
重新加入成員存在的問題
我們已經(jīng)了解 MGR 必須為了高可用提供的策略,以及它如何實(shí)現(xiàn),接下來請看示例:
一個小組由三個成員組成,其中一個成員偶爾會遇到丟失數(shù)據(jù)包、斷連或者其它導(dǎo)致無法解決的錯誤情況的影響組內(nèi)通信。還要考慮這些錯誤持續(xù)時間超過 group_replication_member_expel_timeout的值。
其中一個組員發(fā)生故障,小組的其他成員將決定踢出該成員。問題是,一旦該成員重新入組,他將被組驅(qū)逐加入失敗,需要通過手動干預(yù)。
如果該成員的驅(qū)逐超時屬性設(shè)置不為 0,則它將在被驅(qū)逐前等待滿足該時間量(滾皮將超時設(shè)置為 0 意味著他將永遠(yuǎn)等待)。超時后成員將被驅(qū)逐并重新建立連接,并且無法重新加入舊組,需要再次手動干預(yù)。
于此,當(dāng)存在網(wǎng)絡(luò)故障時,顯然需要手動干預(yù)。
在 MySQL 8.0.16 中,我們引入了自動重新加入組的功能,一旦成員被驅(qū)逐出組,它就會自動嘗試重新加入該組,直到達(dá)到預(yù)設(shè)的次數(shù)為止。有時每次重試之間至少等待5分鐘。
如何啟動自動重新加入?
可以通過將group_replication_autorejoin_tries設(shè)置為所需的重試次數(shù)來開啟并使用自動重新加入功能。
SET GLOBAL group_replication_autorejoin_tries = 3
默認(rèn)值為 0,表示服務(wù)器禁用自動重新加入。
如何驗(yàn)證自動重新加入?
與 MySQL 中的許多功能一樣,自動重新加入過程是可以監(jiān)測讓備圓的。自動重新加入的可檢測性依賴于性能模式基礎(chǔ)架構(gòu),階段式收集有關(guān)數(shù)據(jù)。
他們獲取以下信息:
事件發(fā)生的線程ID(THREAD_ID)
活動名稱(EVENT_NAME)
起止時間戳以及事件的總持續(xù)時間(TIMER_START,TIMER_END 和 TIMER_WAIT)
在事件停止之前完成的工作單位和預(yù)估工作單位(WORK_COMPLETED,WORK_ESTIMATED)
因此,當(dāng)自動重新加入過程開始時,它將在performance schema中注冊一個名為“stage / grouprpl / Undergoing auto-rejoinprocedure”的事件。使用表performance_schema.events_stage_current, performance_schema.events_stages_summary_global_by_event_name和performance_schema.events_stages_history_long我們可以觀察到以下內(nèi)容:
是否正在進(jìn)行自動重新加入程序
到目前為止,已經(jīng)減少重試的次數(shù)
直到下一次重試的估計(jì)剩余時間
自動重新加入過程狀態(tài)
可以通過過濾包含“auto-rejoin”字符串的活動事件來查找自動重新加入過程狀態(tài)(即,是否正在進(jìn)行):
SELECT COUNT(*) FROM performance_schema.events_stages_current
WHERE EVENT_NAME LIKE ‘%auto-rejoin%’;
COUNT(*)
查詢結(jié)果存在,證明服務(wù)器上運(yùn)行了自動重新加入過程。
到目前為止的重試次數(shù)
如果正在進(jìn)行自動重新加入程序,我們可以通過選擇階段事件上的工作單元數(shù)來檢查到目前為止嘗試的重試次數(shù):
SELECT WORK_COMPLETED FROM performance_schema.events_stages_current WHERE
EVENT_NAME LIKE ‘%auto-rejoin%’;
WORK_COMPLETED
在這個例子中,到目前為止只有一次嘗試。
預(yù)計(jì)到下次重試的剩余時間
在每次重新加入嘗試之間,服務(wù)器將處于 5 分鐘的可中斷睡眠中。 重新加入嘗試直到成功或失敗之間的時間是無法估計(jì)的。 因此,為了粗略估計(jì)剩余時間,我們可以將到目前為止嘗試的重試次數(shù)乘以 5 分鐘,并減去到目前為止的階段事件所花費(fèi)的時間,以估計(jì)我們還需要多長時間:
SELECT (300.0 – ((TIMER_WAIT*10e-12) – 300.0 * num_retries)) AS time_remaining FROM
(SELECT COUNT(*) – 1 AS num_retries FROM
performance_schema.events_stages_current WHERE EVENT_NAME LIKE ‘%auto-rejoin%’) AS T,
performance_schema.events_stages_current WHERE EVENT_NAME LIKE ‘%auto-rejoin%’;
time_remaining
30.0
所以在這個例子中,在下一次重新加入之前還有 30 秒。注意性能模式表中的所有時間記帳都以微秒精度保持,因此我們將 TIMER_WAIT 縮放為秒。
使用自動重新加入與驅(qū)逐超時的權(quán)衡
到目前為止,在這篇文章中我們只關(guān)注自動重新加入。實(shí)際上,有兩種不同的方法可以實(shí)現(xiàn)離開組的成員的重新加入:
設(shè)置自動重新加入嘗試次數(shù)來實(shí)現(xiàn)自動重新加入
設(shè)置該成員的驅(qū)逐超時時間然后配合手動干預(yù)
能有延緩刪除組內(nèi)可疑成員,并且如果配置為足夠長的驅(qū)逐超時時間,則增加了重新建立連接的機(jī)會,再次與組進(jìn)行交互。
雖然這兩個功能實(shí)現(xiàn)了相同的目標(biāo),但它們的工作方式是不同的,并且需要權(quán)衡。通過使用驅(qū)逐超時,您可以維護(hù)組中可疑的成員,其缺點(diǎn)是您無法添加或刪除成員或選擇新的主機(jī)。如果通過使用自動重新加入,該成員將不再是該組的正常組員,將保持在 superreadonly 模式,直到重新加入該組。但在此期間,重新加入成員的同步舊數(shù)據(jù)的可能性將增加。自動重新加入過程可監(jiān)控,而驅(qū)逐超時不是真正可監(jiān)控的。
所以,總結(jié)一下:
驅(qū)逐超時的優(yōu)點(diǎn)
– 該成員一直在該組內(nèi)
– 可能更適合足夠小的網(wǎng)絡(luò)故障
驅(qū)逐超時的缺點(diǎn)
– 在懷疑某個成員時,無法在該組上添加/刪除成員
– 在懷疑某個成員時,無法選擇新的主機(jī)
– 您無法監(jiān)控此過程
自動重新加入的優(yōu)點(diǎn)
– 該組將在沒有重新加入成員的情況下運(yùn)行,您可以添加/刪除成員并選擇新的主機(jī)
– 您可以監(jiān)控該過程
自動重新加入的缺點(diǎn)
– 您增加了重新加入成員上過時讀取的可能性
– 可能不適合足夠小的網(wǎng)絡(luò)故障
總而言之,我從啟用自動重新加入中獲得了什么?
通過啟用自動重新加入,您可以減少對MySQL實(shí)例的手動干預(yù)的需要。您的系統(tǒng)
更加適應(yīng)瞬間網(wǎng)絡(luò)故障,同時滿足對容錯性和高可用的保證。
摘要
我們引入了一個名為group_replication_autorejoin_tries的新系統(tǒng)變量,允許用戶設(shè)置 MGR 成員在被驅(qū)逐或與組的大多數(shù)人失去聯(lián)系后嘗試重新加入組的次數(shù)。
go中的時間存入mysql,怎么成了UTC時間了
如果和櫻擾mysql的數(shù)據(jù)類型是date的話 用date(‘Y-m-d’)獲取時間
如果是datetime類型,用date(‘Y-m-d H:i:s’)獲取時間
個人建議,用int存儲,這樣占用的的資源小,查詢的速度也會快,用time()方法獲取時間戳,在調(diào)用的時候根據(jù)你想要的形式,將時間戳轉(zhuǎn)頌敬換成你要的時間,如果只顯示年月日的話,用date(‘Y-m-d’,$date),如果需要顯示精確時間,用date(‘Y-m-d H:i:s’)就可以喚旦了
關(guān)于數(shù)據(jù)庫中存儲utc時間格式的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
成都創(chuàng)新互聯(lián)科技有限公司,經(jīng)過多年的不懈努力,公司現(xiàn)已經(jīng)成為一家專業(yè)從事IT產(chǎn)品開發(fā)和營銷公司。廣泛應(yīng)用于計(jì)算機(jī)網(wǎng)絡(luò)、設(shè)計(jì)、SEO優(yōu)化、關(guān)鍵詞排名等多種行業(yè)!
文章名稱:如何在數(shù)據(jù)庫中存儲UTC時間?(數(shù)據(jù)庫中存儲utc時間格式)
鏈接URL:http://fisionsoft.com.cn/article/dpejjhs.html


咨詢
建站咨詢
