可以了解一下MySQL的時(shí)間戳(Timestamp)數(shù)據(jù)類型:
創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的溧陽網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
默認(rèn)時(shí)間戳(Timestamp)類型的取值范圍為'1970-01-01 00:00:01' UTC至'2038-01-19 03:14:07' UTC,數(shù)據(jù)精確到秒級(jí)別,該取值范圍包含約22億個(gè)數(shù)值,因此在MySQL內(nèi)部使用4個(gè)字節(jié)INT類型來存放時(shí)間戳數(shù)據(jù):
1、在存儲(chǔ)時(shí)間戳數(shù)據(jù)時(shí),先將本地時(shí)區(qū)時(shí)間轉(zhuǎn)換為UTC時(shí)區(qū)時(shí)間,再將UTC時(shí)區(qū)時(shí)間轉(zhuǎn)換為INT格式的毫秒值(使用UNIX_TIMESTAMP函數(shù)),然后存放到數(shù)據(jù)庫中。
2、在讀取時(shí)間戳數(shù)據(jù)時(shí),先將INT格式的毫秒值轉(zhuǎn)換為UTC時(shí)區(qū)時(shí)間(使用FROM_UNIXTIME函數(shù)),然后再轉(zhuǎn)換為本地時(shí)區(qū)時(shí)間,最后返回給客戶端。
(Timestamp)時(shí)間戳列可以有四張組合定義,其含義分別為:
1、當(dāng)字段定義為timestamp,表示該字段在插入和更新時(shí)都不會(huì)自動(dòng)設(shè)置為當(dāng)前時(shí)間。
2、當(dāng)字段定義為timestamp DEFAULT CURRENT_TIMESTAMP,表示該字段僅在插入且未指定值時(shí)被賦予當(dāng)前時(shí)間,再更新時(shí)且未指定值時(shí)不做修改。
3、當(dāng)字段定義為timestamp ON UPDATE CURRENT_TIMESTAMP,表示該字段在插入且未指定值時(shí)被賦值為"0000-00-00 00:00:00",在更新且未指定值時(shí)更新為當(dāng)前時(shí)間。
4、當(dāng)字段定義為timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,表示該字段在插入或更新時(shí)未指定值,則被賦值為當(dāng)前時(shí)間。
mySQL插入Date Time 型數(shù)據(jù)就是要獲取DateTime型的數(shù)據(jù)。
獲取Date Time型數(shù)據(jù)的編程例子:
mysql select now();
| now() ? ? ? ? ? ? ? |
| 2008-08-08 22:20:46 |
除了 now() 函數(shù)能獲得當(dāng)前的日期時(shí)間外,MySQL 中還有下面的函數(shù):
current_timestamp()
,current_timestamp
,localtime()
,localtime
,localtimestamp ? ?-- (v4.0.6)
,localtimestamp() -- (v4.0.6)
這些日期時(shí)間函數(shù),都等同于 now()。鑒于 now() 函數(shù)簡短易記,建議總是使用 now() 來替代上面列出的函數(shù)。
擴(kuò)展資料:
MySql的時(shí)間日期函數(shù)(Date Time)的種類:
1、函數(shù)ADDDATE(date,INTERVAL expr type ) ADDDATE(expr,days )
函數(shù)使用說明: 當(dāng)被第二個(gè)參數(shù)的 INTERVAL 格式激活后, ADDDATE() 就是 DATE_ADD() 的同義詞。相關(guān)函數(shù) SUBDATE() 則是 DATE_SUB() 的同義詞。對(duì)于 INTERVAL 參數(shù)上的信息 ,請(qǐng)參見關(guān)于 DATE_ADD() 的論述。
2、函數(shù) ADDTIME(expr,expr2 )
函數(shù)使用說明: ADDTIME() 將 expr2 添加至 expr 然后返回結(jié)果。 expr 是一個(gè)時(shí)間或時(shí)間日期表達(dá)式,而 expr2 是一個(gè)時(shí)間表達(dá)式。
3、函數(shù) CONVERT_TZ(dt,from_tz,to_tz )
函數(shù)使用說明: CONVERT_TZ() 將時(shí)間日期值 dt 從 from_tz 給出的時(shí)區(qū)轉(zhuǎn)到 to_tz 給出的時(shí)區(qū),然后返回結(jié)果值。關(guān)于可能指定的時(shí)區(qū)的詳細(xì)論述,若自變量無效,則這個(gè)函數(shù)會(huì)返回 NULL
參考資料:百度百科 MySQL函數(shù)
1、將時(shí)間轉(zhuǎn)換為時(shí)間戳
[sql] view plaincopyprint?
select unix_timestamp('2009-10-26 10-06-07')
如果參數(shù)為空,則處理為當(dāng)前時(shí)間
2、將時(shí)間戳轉(zhuǎn)換為時(shí)間
[sql] view plaincopyprint?
select from_unixtime(1256540102)
有些應(yīng)用生成的時(shí)間戳是比這個(gè)多出三位,是毫秒表示,如果要轉(zhuǎn)換,需要先將最后三位去掉,否則返回NULL
UNIX_TIMESTAMP(date)
如果沒有參數(shù)調(diào)用,返回一個(gè)Unix時(shí)間戳記(從'1970-01-01 00:00:00'GMT開始的秒數(shù))。如果UNIX_TIMESTAMP()用一個(gè)date參數(shù)被調(diào)用,它返回從'1970-01-01 00:00:00' GMT開始的秒數(shù)值。date可以是一個(gè)DATE字符串、一個(gè)DATETIME字符串、一個(gè)TIMESTAMP或以YYMMDD或YYYYMMDD格式的 本地時(shí)間的一個(gè)數(shù)字。
[sql] view plaincopyprint?
mysql select UNIX_TIMESTAMP();
- 882226357
mysql select UNIX_TIMESTAMP('1997-10-04 22:23:00');
- 875996580
當(dāng)UNIX_TIMESTAMP被用于一個(gè)TIMESTAMP列,函數(shù)將直接接受值,沒有隱含的“string-to-unix-timestamp”變換。
FROM_UNIXTIME(unix_timestamp)
以'YYYY-MM-DD HH:MM:SS'或YYYYMMDDHHMMSS格式返回unix_timestamp參數(shù)所表示的值,取決于函數(shù)是在一個(gè)字符串還是或數(shù)字上下文中被使用。
[sql] view plaincopyprint?
mysql select FROM_UNIXTIME(875996580);
- '1997-10-04 22:23:00'
mysql select FROM_UNIXTIME(875996580) + 0;
- 19971004222300
FROM_UNIXTIME(unix_timestamp,format)
返回表示 Unix 時(shí)間標(biāo)記的一個(gè)字符串,根據(jù)format字符串格式化。format可以包含與DATE_FORMAT()函數(shù)列出的條目同樣的修飾符。
[sql] view plaincopyprint?
mysql select FROM_UNIXTIME(UNIX_TIMESTAMP(),
'%Y %D %M %h:%i:%s %x');
- '1997 23rd December 03:43:30 x'
通過 UNIX_TIMESTAMP 函數(shù)把 MySQL 數(shù)據(jù)庫中的 date 類型數(shù)據(jù)轉(zhuǎn)換成 unix timestamp 形式的一個(gè)整形數(shù)字:
[sql] view plaincopyprint?
select UNIX_TIMESTAMP('2006-02-28') testdate;
[sql] view plaincopyprint?
按理說得到的時(shí)間戳應(yīng)該可以直接拿來給 PHP 的 date() 等函數(shù)使用。但奇怪的是:
echo date("Y-m-d",$testdate);
顯示出來的日期跟數(shù)據(jù)庫實(shí)際的日期相比卻少了一天,百思不得其解。反復(fù)查看 MySQL 關(guān)于 UNIX_TIMESTAMP 函數(shù)的說明,終于發(fā)現(xiàn)問題所在:“The server interprets date as a value in the current time zone and converts it to an internal value in UTC.” 原來 MySQL 的 UNIX_TIMESTAMP 函數(shù)得到的時(shí)間戳是 UTC 時(shí)間,而不是服務(wù)器設(shè)定的特定 Time zone 的時(shí)間。經(jīng)過這樣一轉(zhuǎn)化,時(shí)間戳就憑空少了8個(gè)小時(shí)(對(duì)于咱這里來說),而 PHP 中的 timestamp 則計(jì)算的都是系統(tǒng)設(shè)定時(shí)區(qū)的當(dāng)?shù)貢r(shí)間。因此 2006-02-28 這個(gè)日期被減去了8個(gè)小時(shí),自然變成了2006-02-27。
[sql] view plaincopyprint?
解決方法:把這八個(gè)小時(shí)加回去(UNIX_TIMESTAMP('2006-02-28' + INTERVAL 8 HOUR));或者棄用 UNIX_TIMESTAMP 函數(shù), 直接得到 MySQL date 字符串之后通過 strtotime() 函數(shù)來把字符串轉(zhuǎn)化成真正的本地時(shí)間戳。
找出下個(gè)月生日的動(dòng)物也是容易的。假定當(dāng)前月是4月,那么月值是4,你可以找在5月出生的動(dòng)物 (5月),方法是:
[sql] view plaincopyprint?
mysql SELECT name, birth FROM pet WHERE MONTH(birth) = 5;
.................
$conn=mysql_connect("localhost","root","1234")or die("連接數(shù)據(jù)庫失敗");
$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]);
如果是日期字符串類型就是~
CREATE TABLE 表名
(
time datetime NOT NULL DEFAULT NOW(),
...
)
如果是時(shí)間戳~
CREATE TABLE 表名
(
time int NOT NULL DEFAULT CURRENT_TIMESTAMP(),
...
)
-----希望對(duì)你有幫助~
如果是插入的時(shí)候的話~在對(duì)應(yīng)值上填寫NOW()/CURRENT_TIMESTAMP() 也是可以的
mysql怎么獲取時(shí)間戳的函數(shù)UNIX_TIMESTAMP?我們收集了網(wǎng)絡(luò)上流行的各種關(guān)于獲取UNIX_TIMESTAMP的方法總結(jié)。
CREATE TRIGGER cus_info_tbl_tr AFTER INSERT ON cus_info_tbl
FOR EACH ROW
INSERT INTO summary_tbl ( `school_id`, `province_id`, `city_id`, `year`, `month`, `day`, `hour`, `minute`, `first_time`, `intdate` ) VALUES
( NEW.school_id,
NEW.province_id,
NEW.city_id,
YEAR( NEW.date_call ),
MONTH( NEW.date_call ),
DAYOFMONTH( NEW.date_call ),
HOUR( NEW.date_call ),
MINUTE( NEW.date_call ),
NEW.first_time,
UNIX_TIMESTAMP( NEW.date_call )+28800
);
看到了吧,在這個(gè)時(shí)間戳后面再加上8個(gè)小時(shí)的秒數(shù)就搞定了,呵呵。
不過我在google的時(shí)候注意到有很多兄弟都反應(yīng)UNIX_TIMESTAMP和php中的mktime得到的值是一樣的,但是我這里卻出現(xiàn)了問題,到現(xiàn)在也沒有能夠找到原因。
代碼如下 復(fù)制代碼
UNIX_TIMESTAMP(), UNIX_TIMESTAMP(date)
若無參數(shù)調(diào)用,則返回一個(gè)Unix timestamp ('1970-01-01 00:00:00' GMT 之后的秒數(shù)) 作為無符號(hào)整數(shù)。若用date 來調(diào)用UNIX_TIMESTAMP(),它會(huì)將參數(shù)值以'1970-01-01 00:00:00' GMT后的秒數(shù)的形式返回。date 可以是一個(gè)DATE 字符串、一個(gè) DATETIME字符串、一個(gè) TIMESTAMP或一個(gè)當(dāng)?shù)貢r(shí)間的YYMMDD 或YYYMMDD格式的數(shù)字。
查詢
mysql中UNIX_TIMESTAMP()函數(shù)的應(yīng)用比較
應(yīng)用:
代碼如下 復(fù)制代碼
SELECT(
UNIX_TIMESTAMP(endtime)-UNIX_TIMESTAMP(startime)
)/31536000year,id,name
FROMtestime
LIMIT0,30
這里我們可以使用
FROM_UNIXTIME(unix_timestamp), FROM_UNIXTIME(unix_timestamp,format) 來格式化一個(gè)UNIX_TIMESTAMP()時(shí)間戳,它將返回'YYYY-MM-DD HH:MM:SS'或YYYYMMDDHHMMSS 格式值的 unix_timestamp參數(shù)表示,具體格式取決于該函數(shù)是否用在字符串中或是數(shù)字語境中。
若format 已經(jīng)給出,則結(jié)果的格式是根據(jù)format 字符串而定。 format 可以包含同DATE_FORMAT() 函數(shù)輸入項(xiàng)列表中相同的說明符。
代碼如下 復(fù)制代碼
mysql Select FROM_UNIXTIME(875996580);
- '1997-10-04 22:23:00'
mysql Select FROM_UNIXTIME(875996580) + 0;
- 19971004222300
mysql Select FROM_UNIXTIME(UNIX_TIMESTAMP(),
- '%Y %D %M %h:%i:%s %x');
- '2003 6th August 06:22:58 2003'
php中:time()
time -- 返回當(dāng)前的 Unix 時(shí)間戳
strtotime() 也可以轉(zhuǎn)換Unix 時(shí)間戳
請(qǐng)參考
public static void insertDemo(String[] args) throws Exception {
MsgSwapDAOImpl dao = new MsgSwapDAOImpl();
Connection conn = dao.jdbcUtil.getConnection();
String appKey ="40825Td288461463";
String msg = "wlllllll";
conn.setAutoCommit(false);
String sql = "insert into TTT(ID, CREATE_DATE) values(?,?)";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, 888888);
pstmt.setTimestamp(2, TimeUtil.nowTimestamp());
分享題目:mysql怎么輸時(shí)間戳 mysql如何獲取當(dāng)前時(shí)間的時(shí)間戳
文章URL:http://vcdvsql.cn/article44/hhpoee.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、定制開發(fā)、網(wǎng)站維護(hù)、微信小程序、網(wǎng)頁設(shè)計(jì)公司、外貿(mào)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)