mysql存儲時間時間戳
A. mysql資料庫里的日期用timestamp還是datetime好
Mysql中經常用來存儲日期的數據類型有2種:Date、Datetime.
1.Date數據類型:用來存儲沒有時間的日期。Mysql獲取和顯示這個類型的格式為「YYYY-MM-DD」。支持的時間范圍為「1000-00-00」到「9999-12-31」。
2.Datetime類型:存儲既有日期又有時間的數據。存儲和顯示的格式為 「YYYY-MM-DD HH:MM:SS」。支持的時間范圍是「1000-00-00 00:00:00」到「9999-12-31 23:59:59」。
B. mysql 資料庫存時間最好是時間戳還是格式的時間
推薦使用時間戳存儲,尤其是這個時間欄位需要參與運算,比如日期先後的判斷,就會比較方便
C. mysql 把時間換成時間戳進行存儲在int欄位中還是直接用datetime好
直接使用的 int 好,畢竟時間戳可以用FROM_UNIXTIME等時間函數轉換成時間格式, int 比datetime計算和比較簡單一點,還有是就是感覺數據量大度的話int應該比datetime更快一點。
公司資料庫大牛知,建的道所有的數據表關於時間的都是intint比datetime計算簡單,數據量大的話int比datetime儲存速度更快一點。
時間戳,一個完整的、可驗證的數據塊,它表示在特定時間之前存在的一段數據,通常是一個字元序列,標識某個時刻的時間。
利用數字簽名技術生成下一代數據,簽名對象包括原始文件信息、簽名參數、簽名時間等信息。廣泛應用於,知識產權保護、合同簽訂、財務核算、電子報價投標、股票交易等領域。

(3)mysql存儲時間時間戳擴展閱讀:
有兩種類型的時間戳:
1.自建時間戳:這種時間戳是獲取時間接收設備到時間戳伺服器的時間戳,並通過時間戳伺服器發出時間戳證書。該時間戳可用於企業內部責任的確定,經法院證明不具有法律效力。它不能作為一個法律基礎,因為它很可能被篡改時,接收設備收到的時間。
2.具有法律效力的時間戳:是由中國科學院國家時間中心和北京聯合信託技術服務有限公司共同打造的中國第三方可信時間戳認證服務。國家計時中心負責計時和准時監控。
D. mysql資料庫保存當前時間的話為什麼用int不用timestamp
mysql儲存時間有幾種方式:
date 具體格式為2017-08-27,精確到天
datetime 具體格式為2017-08-27 00:00:00,精確到秒
timestamp具體格式為2017-08-27 00:00:00,精確到秒
int,具體格式為時間戳。
這些都是可以用來儲存時間的,具體需要看項目的需求了。
E. mysql時間戳轉換日期格式
時間戳轉時間:
mysql> select from_unixtime(1604730123);
+---------------------------+
| from_unixtime(1604730123) |
+---------------------------+
| 2020-11-07 14:22:03 |
+---------------------------+
1 row in set (0.02 sec)
時間戳格式化
mysql> SELECT from_unixtime(1604730123, '%Y-%m-%d %H:%i:%S');
+------------------------------------------------+
| from_unixtime(1604730123, '%Y-%m-%d %H:%i:%S') |
+------------------------------------------------+
| 2020-11-07 14:22:03 |
+------------------------------------------------+
1 row in set (0.00 sec)
函數:FROM_UNIXTIME
作用:將MYSQL中以INT(11)存儲的時間以"YYYY-MM-DD"格式來顯示。
語法:FROM_UNIXTIME(unix_timestamp,format)
返回表示 Unix 時間標記的一個字元串,根據format字元串格式化。format可以包含與DATE_FORMAT()函數列出的條目同樣的修飾符。
根據format字元串格式化date值。
下列修飾符可以被用在format字元串中:
%M 月名字(January……December)
%W 星期名字(Sunday……Saturday)
%D 有英語前綴的月份的日期(1st, 2nd, 3rd, 等等。)
%Y 年, 數字, 4 位
%y 年, 數字, 2 位
%a 縮寫的星期名字(Sun……Sat)
%d 月份中的天數, 數字(00……31)
%e 月份中的天數, 數字(0……31)
%m 月, 數字(01……12)
%c 月, 數字(1……12)
%b 縮寫的月份名字(Jan……Dec)
%j 一年中的天數(001……366)
%H 小時(00……23)
%k 小時(0……23)
%h 小時(01……12)
%I 小時(01……12)
%l 小時(1……12)
%i 分鍾, 數字(00……59)
%r 時間,12 小時(hh:mm:ss [AP]M)
%T 時間,24 小時(hh:mm:ss)
%S 秒(00……59)
%s 秒(00……59)
%p AM或PM
%w 一個星期中的天數(0=Sunday ……6=Saturday )
%U 星期(0……52), 這里星期天是星期的第一天
%u 星期(0……52), 這里星期一是星期的第一天
%% 一個文字「%」。
F. 如何處理mysql中的時間戳讀取問題
1.MySQL獲得當前時間戳函數:current_timestamp,current_timestamp()mysql>selectcurrent_timestamp,current_timestamp();+---------------------+---------------------+|current_timestamp|current_timestamp()|+---------------------+---------------------+|2008-08-0923:22:24|2008-08-0923:22:24|+---------------------+---------------------+2.MySQL(Unix時間戳、日期)轉換函數:unix_timestamp(),unix_timestamp(date),from_unixtime(unix_timestamp),from_unixtime(unix_timestamp,format)下面是示例:selectunix_timestamp();--1218290027selectunix_timestamp('2008-08-08');--1218124800selectunix_timestamp('2008-08-0812:30:00');--1218169800selectfrom_unixtime(1218290027);--'2008-08-0921:53:47'selectfrom_unixtime(1218124800);--'2008-08-0800:00:00'selectfrom_unixtime(1218169800);--'2008-08-0812:30:00'selectfrom_unixtime(1218169800,'%Y%D%M%h:%i:%s%x');--'20088thAugust12:30:002008'3.MySQL時間戳(timestamp)轉換、增、減函數:timestamp(date)--datetotimestamptimestamp(dt,time)--dt+timetimestampadd(unit,interval,datetime_expr)--timestampdiff(unit,datetime_expr1,datetime_expr2)--請看示例部分:selecttimestamp('2008-08-08');--2008-08-0800:00:00selecttimestamp('2008-08-0808:00:00','01:01:01');--2008-08-0809:01:01selecttimestamp('2008-08-0808:00:00','1001:01:01');--2008-08-1809:01:01selecttimestampadd(day,1,'2008-08-0808:00:00');--2008-08-0908:00:00selectdate_add('2008-08-0808:00:00',interval1day);--2008-08-0908:00:00MySQLtimestampadd()函數類似於date_add()。selecttimestampdiff(year,'2002-05-01','2001-01-01');---1selecttimestampdiff(day,'2002-05-01','2001-01-01');---485selecttimestampdiff(hour,'2008-08-0812:00:00','2008-08-0800:00:00');---12selectdatediff('2008-08-0812:00:00','2008-08-0100:00:00');--7MySQLtimestampdiff()函數就比datediff()功能強多了,datediff()只能計算兩個日期(date)之間相差的天數。
G. mysql中怎麼將時間轉化為時間戳
mysql 中把時間戳轉換成普通時間,使用FROM_UNIXTIME函數
一、FROM_UNIXTIME函數簡介
1、函數作用:將MYSQL中以INT(11)存儲的時間以"YYYY-MM-DD"格式來顯示。
2、語法:FROM_UNIXTIME(unix_timestamp,format)
返回表示 Unix 時間標記的一個字元串,根據format字元串格式化。format可以包含與DATE_FORMAT()函數列出的條目同樣的修飾符。
根據format字元串格式化date值。
H. 什麼是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]);
