導航:首頁 > 編程大全 > 時間戳在資料庫表示

時間戳在資料庫表示

發布時間:2021-02-20 17:27:40

㈠ 什麼是mysql 的時間戳

1、將時間轉換為時間戳

[sql] view plainprint?
select unix_timestamp('2009-10-26 10-06-07')

如果參數為空,則處理為當前時間
2、將時間戳轉換為時間

[sql] view plainprint?
select from_unixtime(1256540102)

有些應用生成的時間戳是比這個多出三位,是毫秒錶示,如果要轉換,需要先將最後三位去掉,否則返回NULL

UNIX_TIMESTAMP(date)
如果沒有參數調用,返回一個Unix時間戳記(從'1970-01-01 00:00:00'GMT開始的秒數)。如果UNIX_TIMESTAMP()用一個date參數被調用,它返回從'1970-01-01 00:00:00' GMT開始的秒數值。date可以是一個DATE字元串、一個DATETIME字元串、一個TIMESTAMP或以YYMMDD或YYYYMMDD格式的 本地時間的一個數字。

[sql] view plainprint?
mysql> select UNIX_TIMESTAMP();
-> 882226357
mysql> select UNIX_TIMESTAMP('1997-10-04 22:23:00');
-> 875996580

當UNIX_TIMESTAMP被用於一個TIMESTAMP列,函數將直接接受值,沒有隱含的「string-to-unix-timestamp」變換。

FROM_UNIXTIME(unix_timestamp)
以'YYYY-MM-DD HH:MM:SS'或YYYYMMDDHHMMSS格式返回unix_timestamp參數所表示的值,取決於函數是在一個字元串還是或數字上下文中被使用。

[sql] view plainprint?
mysql> select FROM_UNIXTIME(875996580);
-> '1997-10-04 22:23:00'
mysql> select FROM_UNIXTIME(875996580) + 0;
-> 19971004222300

FROM_UNIXTIME(unix_timestamp,format)

返回表示 Unix 時間標記的一個字元串,根據format字元串格式化。format可以包含與DATE_FORMAT()函數列出的條目同樣的修飾符。

[sql] view plainprint?
mysql> select FROM_UNIXTIME(UNIX_TIMESTAMP(),
'%Y %D %M %h:%i:%s %x');
-> '1997 23rd December 03:43:30 x'

通過 UNIX_TIMESTAMP 函數把 MySQL 資料庫中的 date 類型數據轉換成 unix timestamp 形式的一個整形數字:
[sql] view plainprint?
select UNIX_TIMESTAMP('2006-02-28') testdate;

[sql] view plainprint?
按理說得到的時間戳應該可以直接拿來給 PHP 的 date() 等函數使用。但奇怪的是:

echo date("Y-m-d",$testdate);

顯示出來的日期跟資料庫實際的日期相比卻少了一天,百思不得其解。反復查看 MySQL 關於 UNIX_TIMESTAMP 函數的說明,終於發現問題所在:「The server interprets date as a value in the current time zone and converts it to an internal value in UTC.」 原來 MySQL 的 UNIX_TIMESTAMP 函數得到的時間戳是 UTC 時間,而不是伺服器設定的特定 Time zone 的時間。經過這樣一轉化,時間戳就憑空少了8個小時(對於咱這里來說),而 PHP 中的 timestamp 則計算的都是系統設定時區的當地時間。因此 2006-02-28 這個日期被減去了8個小時,自然變成了2006-02-27。

[sql] view plainprint?
解決方法:把這八個小時加回去(UNIX_TIMESTAMP('2006-02-28' + INTERVAL 8 HOUR));或者棄用 UNIX_TIMESTAMP 函數, 直接得到 MySQL date 字元串之後通過 strtotime() 函數來把字元串轉化成真正的本地時間戳。

找出下個月生日的動物也是容易的。假定當前月是4月,那麼月值是4,你可以找在5月出生的動物 (5月),方法是:

[sql] view plainprint?
mysql> SELECT name, birth FROM pet WHERE MONTH(birth) = 5;

.................
$conn=mysql_connect("localhost","root","1234")or die("連接資料庫失敗");
$conndb=mysql_select_db("test",$conn)or die("連接表失敗");
$query="select * from ttable";
$result = mysql_query($query,$conn);
while($row = mysql_fetch_array($result)){
$rows[]=$row;
}
$random =rand(0,count($rows));
print_r($rows[$random]);

㈡ 時間戳的資料庫中

在一張表上加上時間戳欄位,並做索引,可以比較好的得到表寫入的順序,基本上也可以保證唯一性。

㈢ TXT中的時間戳導入到資料庫中怎麼能在表中顯示為時間格式呢

也就是0000-00-00 00:00:00(Y-m-d H:i:s),你不轉換當然是默認的0000-00-00 00:00:00,至於怎麼轉換要看你用什麼語言了可以問度娘專 追問: 我是在linux上寫的bash腳本把屬文本裡面的時間戳直接導入到資料庫里,現在就是導進去之後顯示就有問題,求解決 回答: 我的意思是說,你把時間戳直接導入資料庫裡面DATETIME格式的列的話資料庫是不會自己幫你轉換的!在循環裡面加個判斷轉換成需要的格式然後再導入,或者是之前先轉換,再直接導入都可以的好像是date -d '1970-01-01 什麼的 忘記了轉換方法網路上應該有演算法的 追問: 噢,你是說在linux裡面先轉換好然後再導入進去,我研究研究 回答: 嗯 是的 也可以導入的過程中轉換 其實就是數據類型的轉換,歸根到底就是這兩個數據之間不支持直接的轉換,需要更加復雜的演算法

㈣ 資料庫中的時間戳怎麼理解

把時間t轉換成從 1970-01-01 00:00 開始到時間t所經過的秒數。這個數值就是時間t對應的時間戳。
由於是數值方便比較和運算

㈤ 怎麼在資料庫里記錄個時間戳

sqlite的話 直接NSdate類型就可以了 資料庫欄位類型選date(或者datetime,time。。。具體哪一個 忘了)

㈥ 時間戳可以做資料庫記錄的主鍵嗎

可以 但是要保證最小單為,毫秒 不然同意秒產生兩條數據就不好處理了

㈦ 資料庫時間戳格式為什麼從1970年開始

在開源領域,很多時間戳都是從1970開始,像 mysql這樣的資料庫和php,這又稱作Unix時間戳,因為在1970年,Unix操作系統正式投入使用。

㈧ 分布式資料庫系統中什麼叫時間戳時間戳怎麼理解

時間戳(timestamp),通常是一個字元序列,唯一地標識某一刻的時間。數字時間戳技術是數字簽名技術一種變種的應用。
定義
時間戳是指格林威治時間1970年01月01日00時00分00秒(北京時間1970年01月01日08時00分00秒)起至現在的總秒數。
分類
1.自建時間戳:此類時間戳是通過時間接收設備(如GPS,CDMA,北斗衛星)來獲取時間到時間戳伺服器上,並通過時間戳伺服器簽發時間戳證書。此種時間戳可用來企業內部責任認定,在法庭認證時並不具備法律效力。因其在通過時間接收設備接收時間時存在被篡改的可能,故此不能做為法律依據。
2.具有法律的效力的時間戳:它是由我國中科院國家授時中心與北京聯合信任技術服務有限公司負責建設的我國第三方可信時間戳認證服務。由國家授時中心負責時間的授時與守時監測。因其守時監測功能而保障時間戳證書中的時間的准確性和不被篡改。獲取時間戳平台有「大眾版權保護平台」,可與我國中科院國家授時中心時間同步。

資料庫系統中時間戳
資料庫中自動生成的唯一二進制數字,與時間和日期無關的, 通常用作給錶行加版本戳的機制。存儲大小為 8個位元組。
每個資料庫都有一個計數器,當對資料庫中包含 timestamp 列的表執行插入或更新操作時,該計數器值就會增加。該計數器是資料庫時間戳。這可以跟蹤資料庫內的相對時間,而不是時鍾相關聯的實際時間。一個表只能有一個 timestamp 列。每次修改或插入包含 timestamp 列的行時,就會在 timestamp 列中插入增量資料庫時間戳值。這一屬性使 timestamp 列不適合作為鍵使用,尤其是不能作為主鍵使用。對行的任何更新都會更改 timestamp 值,從而更改鍵值。如果該列屬於主鍵,那麼舊的鍵值將無效,進而引用該舊值的外鍵也將不再有效。如果該表在動態游標中引用,則所有更新均會更改游標中行的位置。如果該列屬於索引鍵,則對數據行的所有更新還將導致索引更新。
使用某一行中的 timestamp 列可以很容易地確定該行中的任何值自上次讀取以後是否發生了更改。如果對行進行了更改,就會更新該時間戳值。如果沒有對行進行更改,則該時間戳值將與以前讀取該行時的時間戳值一致。若要返回資料庫的當前時間戳值,請使用 @@DBTS。

在控制並發時起到作用
用戶A/B同時打開某條記錄開始編輯,保存是可以判斷時間戳,因為記錄每次被更新時,系統都會自動維護時間戳,所以如果保存時發現取出來的時間戳與資料庫中的時間戳如果不相等,說明在這個過程中記錄被更新過,這樣的話可以防止別人的更新被覆蓋。

㈨ 在MySQL資料庫裡面,怎麼使用SQL語句查詢功能把時間戳格式格式化為日期格式如:2013-02-28 6:00:00

你沒明確說要更新什麼欄位,只能給你個例子:

update archives set 欄位A =5 where from_unixtime(pubdate,'%Y-%m-%d %h:%i:%m')='2012-11-11 00:00:00';

------------------from_unixtime(pubdate,'%Y-%m-%d %h:%i:%m')這個的意思就是把時間戳變專成日期
類似2012-11-11 00:10:10這樣的格式

如果說屬是要把pubdate欄位的內容直接更新成剛才那樣的日期格式,int類型的欄位是存儲不了的

閱讀全文

與時間戳在資料庫表示相關的資料

熱點內容
微信什麼版本適合安卓236 瀏覽:41
瑞風s5車載導航找不到相關文件 瀏覽:709
冬瓜影視app哪個最靠譜 瀏覽:159
移動數據流量無法用怎麼辦 瀏覽:420
u盤聽歌找不到多媒體文件 瀏覽:383
win10經常無網路連接不上 瀏覽:471
iphone5se翻新機鑒別 瀏覽:124
ai畫冊教程 瀏覽:32
js數字校驗銀行卡號 瀏覽:419
質量工作總結需要哪些數據 瀏覽:206
iphone6怎麼收彩信 瀏覽:985
ape文件如何打開 瀏覽:495
越獄後的iphone5怎麼刪除其他 瀏覽:843
開機無需密碼 瀏覽:870
電腦系統的密碼文件是什麼 瀏覽:91
app如何賣 瀏覽:853
電腦怎麼取消wifi共享密碼 瀏覽:743
瀏覽器保存密碼安全嗎 瀏覽:337
安卓實現桌面大文件夾 瀏覽:449
達芬奇可視化的配置文件 瀏覽:338

友情鏈接