gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区

站長資訊網
最全最豐富的資訊網站

一起聊聊mysql的timestamp會存在時區問題

本篇文章給大家帶來了mysql中timestamp時間類型相關的知識,mysql中有兩個時間類型,timestamp與datetime,希望對大家有幫助。

一起聊聊mysql的timestamp會存在時區問題

眾所周知,mysql中有兩個時間類型,timestamp與datetime,但當在網上搜索timestamp與datetime區別時,會發現網上有不少與時區有關的完全相反的結論,主要兩種:

  • timestamp沒有時區問題,而datetime有時區問題,原因是timestamp是以UTC格式存儲的,而datetime存儲類似于時間字符串的形式

  • timestamp也有時區問題

兩種觀點讓人迷惑,那timestamp到底會不會有時區問題呢?

基本概念

時區:

由于地域的限制,人們發明了時區的概念,用來適應人們在時間感受上的差異,比如中國的時區是東8區,表示為+8:00,或GMT+8,而日本的時區是東9區,表示為+9:00,或GMT+9,當中國是早上8點時,日本是早上9點,即東8區的8點與東9區的9點,這兩個時間是相等的。

另外時間還有如下兩個概念:

絕對時間:

如unix時間綴,是1970-01-01 00:00:00開始到現在的秒數,如:1582416000,這種表示是絕對時間,不受時區影響,也叫紀元時epoch。

本地時間:

相對于某一時區的時間,是本地時間,比如東8區的2020-02-23 08:00:00,是中國人的本地時間,而在此時,日本人的本地時間是2020-02-23 09:00:00,所以本地時間都是與某一時區相關的,脫離時區看本地時間,是沒有意義的,因為你并不知道這具體是指的什么時間點。

比如在Java中,Date對象是絕對時間,通過SimpleDateFormat格式化出來的yyyy-MM-dd HH:mm:ss形式的時間字符串,是本地時間,如果SimpleDateFormat沒有調用setTimeZone()顯示指定時區,那么默認用的是jvm運行在的操作系統上的時區,我們開發機上的時區基本都是GMT+8。

timestamp與datetime區別

如下,我創建了一張表,里面time_stamp是timestamp類型,date_time是datetime類型,create_timestamp、create_datetime是timestamp與datetime類型,但是它們可以由數據庫自動生成。

CREATE TABLE `time_test` (   `id` bigint unsigned,   `time_stamp` timestamp,   `date_time` datetime,   `create_timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創建時間',   `create_datetime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創建時間',   PRIMARY KEY (`id`) )

1、首先將數據庫時區設置為+8:00,即中國的東8區

一起聊聊mysql的timestamp會存在時區問題

2、然后如下手動插入一個固定時間的數據,以及用now()函數插入當前時間

一起聊聊mysql的timestamp會存在時區問題

3、當插入完數據后,然后我們修改當前會話的時區為+9:00,即日本的東9區,然后再次查看數據

一起聊聊mysql的timestamp會存在時區問題

4、如上,定義為timestamp類型的列time_stamp、create_timestamp不管是手動插入的,還是now()函數插入的,東9區都比東8區的時間大1個小時,這是正確的,說明timestamp類型是時區相關的,然而定義為datetime類型的date_time、create_datetime字段,時間都沒有變化,這說明datetime類型是時區無關的。

結論:

timestamp在存儲上是包含時區的,而datetime是不包含時區,說明網上的第一種說法是對的。

再看個例子

我們將東8區的的2020-02-23 08:00:00轉換為unix時間綴(絕對時間),再插入數據庫試試?

如下,使用linux的date命令轉換時間串為unix時間綴:

$ "date" --date="2020-02-23 08:00:00 +08:00" +%s 1582416000

然后用mysql的from_unixtime()函數,將unix時間綴轉換為mysql時間類型來插入數據。

一起聊聊mysql的timestamp會存在時區問題

如上,查詢出來的時間,也是東9區的9點,時間也是正確的。

為什么網上又說timestamp類型存在時區問題?

我發現網上說timestamp有時區問題,都是應用端插入數據,然后到數據庫中去看,結果發現時間不一樣,因此我打算在Java中寫個Demo試一下,看能不能重現這個問題。

1、首先,下面是Java中Entity的定義,與上面的time_test表對應,注意,這里面時間屬性都是用Date類型定義的,如下:

一起聊聊mysql的timestamp會存在時區問題

2、然后,我寫了兩個接口/insert與/queryAll來插入與查詢數據,如下:

一起聊聊mysql的timestamp會存在時區問題

3、然后我把數據庫的時區設置為+09:00時區,即日本的東9區,如下:

一起聊聊mysql的timestamp會存在時區問題

4、然后調用/insert接口插入數據,注意我接口傳入的時間是東8區的8點,如下:

一起聊聊mysql的timestamp會存在時區問題

5、插入完后,去數據庫中查詢一把,如下:

一起聊聊mysql的timestamp會存在時區問題

可以看到,time_stamp字段時間是9點,且我已將數據庫時區設置為東9區,東9區的9點與東8區的8點,這兩個時間實際是相等的,因此時間數據沒錯。

6、然后我使用/queryAll接口將數據查詢出來,如下:

一起聊聊mysql的timestamp會存在時區問題

timeStamp屬性是1582416000000,這是毫秒級的時間綴,秒級則是1582416000,對應是東8區的2020-02-23 08:00:00,時間數據也沒錯!

7、然后我又將mysql時區修改回+8:00,并重啟我們的java應用,如下:

一起聊聊mysql的timestamp會存在時區問題

8、再查詢一下數據,如下:

一起聊聊mysql的timestamp會存在時區問題

timeStamp屬性還是1582416000000,時間沒有變化,這也是正確的。

那為什么網上會說timestamp存在時區問題?

經過一翻查看,我發現他們都提到了jdbc的serverTimezone,會不會是這個配置錯誤導致的呢?就先試試吧!

1、如圖,我把數據庫時區修改回+9:00時區,然后故意把jdbc的url上的serverTimezone配置為與數據庫不一致的GMT+8時區,然后重啟java應用,如下:

一起聊聊mysql的timestamp會存在時區問題

url: jdbc:mysql://localhost:3306/testdb?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8

其中GMT%2B8就是GMT+8,因為在url上需要urlencode,所以就變成了GMT%2B8。

2、重新插入數據,注意插入的時間還是東8區的8點,如下:

一起聊聊mysql的timestamp會存在時區問題

3、然后,我再到數據庫中查詢一把,如下:

一起聊聊mysql的timestamp會存在時區問題

time_stamp中時間竟然是8點!要知道我們雖然插入的是東8區的8點,但當前會話可是東9區的,東8區的8點等于東9區的9點,所以正確顯示應該為9點才對,時間差了1小時!

4、然后,我又調用/queryAll接口查詢了一把,想看看mybatis查詢出來的時間數據對不對,如下:

一起聊聊mysql的timestamp會存在時區問題

可以看到timeStamp是1582416000000,秒級是1582416000,這個時間就是東8區的8點,東9區的9點啊!查詢出來的時間竟然是正確的,為什么???

serverTimezone的本質

為了找出問題所在,我調試了一下mysql的jdbc驅動代碼,終于弄明白了原因,主要可以看看如下這幾點:

1.mysql驅動創建連接后,會調用com.mysql.jdbc.ConnectionImpl#configureTimezone()來配置此連接的時區,如果配置了serverTimezone,則會使用serverTimezone配置的時區,沒配置時會去取數據庫中的time_zone變量,這就是為什么我們沒有配置serverTimezone變量時,結果也是正確的。

//若使用普通驅動,使用此方法配置mysql連接的時區 com.mysql.jdbc.ConnectionImpl#configureTimezone() //若使用cj驅動,使用此方法配置mysql連接的時區 com.mysql.cj.protocol.a.NativeProtocol#configureTimezone()

2.調用jdbc的setTimestamp()方法時,實際調用的是com.mysql.cj.jdbc.ClientPreparedStatement#setTimestamp(),這里面會根據serverTimezone指定的時區,將對應的Timestamp對象轉換為serverTimezone指定時區的本地時間字符串。

3.執行sql語句時,會執行com.mysql.cj.jdbc.ClientPreparedStatement#execute(),這里面sendPacket變量保存著真實會發送到mysql的sql語句。

注:看的是8.0.11版本mysql-connector-java驅動源碼,不同版本代碼會稍有差異,比如5.2.16版本驅動,jdbc url上需要同時配置這兩個配置:useTimezone=true&serverTimezone=GMT%2B8,且setTimestamp()對應的是com.mysql.jdbc.PreparedStatement#setTimestampInternal方法。

原理總結如下:

mysql驅動在發送sql前,會將jdbc中的Date對象參數,根據serverTimeZone配置的時區轉化為日期字符串后,再發送sql請求給mysql server,同樣在mysql server返回查詢結果后,結果中的日期值也是日期字符串,mysql驅動會根據serverTimeZone配置的時區,將日期字符串轉化為Date對象。

因此,當serverTimeZone與數據庫實際時區不一致時,會發生時區轉換錯誤,導致時間偏差,如下:

a、比如sql參數是一個Date對象,時間值是東8區的2020-02-23 08:00:00,注意它里面存儲的可不是2020-02-23 08:00:00這個字符串,它是Date對象(絕對時間),只是我用文字表達出來是東8區的2020-02-23 08:00:00。

b、然后,由于serverTimeZone配置的是東8區,mysql驅動會將這個Date對象轉為2020-02-23 08:00:00,注意這時已經是字符串了,然后再將sql發送給mysql,注意這里的sql里面已經將Date參數替換為2020-02-23 08:00:00了,因為Date對象本身是無法走網絡的。

c、然后mysql數據庫接收到這個時間字符串2020-02-23 08:00:00后,由于數據庫時區配置是東9區,它會認為這個時間是東9區的,它會以東9區解析這個時間字符串,這時數據庫保存的時間是東9區的2020-02-23 08:00:00,也就是東8區的2020-02-23 07:00:00,保存的時間就偏差了1個小時。

d、查詢結果里時間為什么又對了呢,因為查詢結果返回了東9區的時間字符串,而java應用又將其理解為是東8區的時間,負負得正了!

將serverTimezone與mysql時區保持一致

so,那么如果我們將serverTimezone配置改正確,即與數據庫保持一致時,應該查詢到的時間就會是錯的,會少1個小時。

1、jdbc url中使用與數據庫一樣的東9區GMT+9,如下:

url: jdbc:mysql://localhost:3306/testdb?serverTimezone=GMT%2B9&useUnicode=true&characterEncoding=utf8

其中的GMT%2B9,即是GMT+9。

2、然后重啟Java應用,再查詢一把看看,如下:

一起聊聊mysql的timestamp會存在時區問題

返回的是毫秒級時間綴1582412400000,秒級就是1582412400,使用linux的date命令轉換為時間字符串形式:

$ "date" --date="@1582412400" +"%F %T %z" 2020-02-23 07:00:00 +0800

看到沒,它是東8區的7點,剛好差了1個小時。

3、所以,使用mysql的timestamp類型時,對于java應用來說,一定要保證jdbc url中的serverTimezone與數據庫中的時區配置是一致的。

另外一點是,當沒有配置serverTimezone時,mysql驅動會自動讀取mysql server中配置的時區,這里面也有坑!如下:

mysql驅動自動讀取數據庫時區的坑

3.1 mysql安裝好后,默認時區是SYSTEM,而SYSTEM指的是system_time_zone變量的時區,如下:

一起聊聊mysql的timestamp會存在時區問題

3.2 當mysql驅動讀到time_zone變量是SYSTEM時,會再去讀取system_time_zone變量,而system_time_zone對于國內來說,默認是CST,這是一個混亂的時區,是4個不同時區的縮寫,如下:

一起聊聊mysql的timestamp會存在時區問題

對于Linux或MySQL,會認為CST是中國標準時間(+8:00),但Java卻認為CST是美國標準時間(-6:00)(注:可能和Java運行在Windows中有關):

如下,linux中CST等于+0800,即中國時區:

$ "date" +"%F %T %Z %z" 2021-09-12 18:35:49 CST +0800

如下,java中CST等于-06:00,美國時區:

一起聊聊mysql的timestamp會存在時區問題

3.3 因此mysql驅動取到CST這個時區值時,它會以為這是-6:00時區,但MySQL卻理解為+8:00時區,因此MySQL時區一定不要配置為CST,而要配置為具體的時區,如+8:00,但如果MySQL時區為CST且不可修改的情況下,一定要配置jdbc的serverTimezone為清晰的時區(如:GMT+8)。

Entity中日期屬性是String呢?

1、我們將Entity對象中的時間屬性改為String(不推薦),如下:

一起聊聊mysql的timestamp會存在時區問題

2、然后也寫兩個接口,/insert2與/queryAll2,如下:

一起聊聊mysql的timestamp會存在時區問題

3、然后插入數據,注意這時我是直接將無時區的8點,作為參數給到sql的,如下:

一起聊聊mysql的timestamp會存在時區問題

4、然后再查詢一把,如下:

一起聊聊mysql的timestamp會存在時區問題

如上所示,time_stamp字段值是8點,但此時數據庫時區是東9區,所以這是東9區的8點。

5、然后我將數據庫與jdbc中serverTimezone都改為東8區呢,改完后重啟Java應用,如下:

一起聊聊mysql的timestamp會存在時區問題

url: jdbc:mysql://localhost:3306/testdb?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8

6、再次插入數據,參數還是無時區的8點,如下:

一起聊聊mysql的timestamp會存在時區問題

7、再查詢一把,如下:

一起聊聊mysql的timestamp會存在時區問題

如上所示,time_stamp字段值是8點,但現在數據庫時間是東8區,所以這是東8區的8點。

8、然后我再將jdbc url上的serverTimezone調整為東9區,然后重啟Java應用,如下:

url: jdbc:mysql://localhost:3306/testdb?serverTimezone=GMT%2B9&useUnicode=true&characterEncoding=utf8

現在serverTimezone與數據庫中不一致,數據庫是東8區,serverTimezone是東9區。

9、我們再次插入無時區的8點,如下:

一起聊聊mysql的timestamp會存在時區問題

10、然后再查詢一把,如下:

一起聊聊mysql的timestamp會存在時區問題

time_stamp字段值還是8點,數據庫是東8區,所以這是東8區的8點,但我們serverTimezone與數據庫的時區不一致啊,沒看到時間有偏差,為什么?

解釋一下

前面說過了,對于jdbc中的Date對象,在發送給mysql前,會先根據serverTimezone轉換為相應時區的時間字符串,但現在Entity中時間屬性是String類型,mysql驅動不會進行轉換,所以不管serverTimezone怎么配置,對String類型的時間串都沒影響。

這樣的話,似乎java中日期類型用時間字符串來存還好些,不容易出錯,但請再認真考慮一下,調用方傳了一個無時區的8點,數據庫自作主張,就將其認為是東9區的8點,但如果這個時間字符串實際是東8區的8點呢?這時如果保存到數據庫中為東9區的8點,那數據就存錯了!

那如果目前api接口就傳的無時區的時間串,Entity中就定義的String,怎么解決呢?

1、詢問接口定義人員,這個接口的時間串指的是哪個時區的,比如是東8區的2020-02-23 08:00:00。

2、然后接口接收到時間后,要以東8區將時間字符串轉換為Date對象,如下:

SimpleDateFormat sdf = new SimpleDateFormat('yyyy-MM-dd HH:mm:ss'); sdf.setTimeZone(TimeZone.getTimeZone("GMT+8")); Date date = sdf.parse("2020-02-23 08:00:00");

3、然后如果Entity中時間屬性定義的是String,那么我們要再將Date對象以數據庫的時區格式化為對應的時間字符串,比如數據庫時區是東9區,那么格式化后就是2020-02-23 09:00:00,如下:

SimpleDateFormat sdf = new SimpleDateFormat('yyyy-MM-dd HH:mm:ss'); sdf.setTimeZone(TimeZone.getTimeZone("GMT+9")); String dateStr = sdf.format(date); entity.setTimeStamp(dateStr);

4、然后將Entity保存到mysql中的,就也會是東9區的2020-02-23 09:00:00,結果正確。

所以,使用String類型來存儲時間數據,要想將時間值保存正確,超級麻煩,不建議在實際開發中這種使用。

最佳實踐

1、大多數團隊會規定api中傳遞時間要用unix時間綴,因為如果你傳一個2020-02-23 08:00:00時間值,它到底是哪個時區的8點呢?對于unix時間綴,就不會有此問題,因為它是絕對時間。而如果某些特殊原因,一定要使用時間字符串,最好使用ISO8601規范那種帶時區的時間串,比如:2020-02-23T08:00:00+08:00。

2、Mybatis中Entity定義要與數據庫定義一致,數據庫中是timestamp,那么Entity中要定義為Date對象,因為mysql驅動在執行sql時,會自動根據serverTimezone配置幫你轉換為數據庫時區的時間串,如果你自己來轉換,你極有可能因為忘記調用setTimeZone()方法,而使用當前java應用所在機器的默認時區,一旦java應用所在機器的時區與數據庫的時區不一致,就會出現時區問題。

3、jdbc的serverTimezone參數,要配置正確,當不配置時,mysql驅動會自動讀取mysql server的時區,此時一定要將mysql server的時區指定為清晰的時區(如:+08:00),切勿使用CST。

4、如果數據庫時區修改后,jdbc的serverTimezone也要跟著修改,并重啟Java應用,就算沒有配置serverTimezone,也需要重啟,因為mysql驅動初始化連接時,會將當前數據庫時區緩存到一個java變量中,不重啟Java應用它不會變。

數據庫中用timestamp還是int來存儲時間?

如果用int型時間綴存儲,不管數據庫時區是啥,都不影響,因為存儲的是絕對時間,看起來完美解決了時區問題。

但從某些角度看,這種方案只是把時區問題從數據庫端推到應用端去了,時區問題將出現在將時間字符串轉換為時間綴的過程中,比如某程序員從api接口中拿到時間字符串后,沒考慮時區,直接轉為unix時間綴,就可能出現時區問題。

因此,對于不帶時區的時間串解析,一定要問清楚這是哪個時區的時間,并在代碼中顯式指定!

另外,用int存儲時間還有如下3個不好的點:

  • 開發人員看到這個字段后,無法一目了然的了解到這個時間綴大概是個什么時間,需要去轉換一下,會很繁瑣。

  • 像update_time這樣的字段,數據庫提供了DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP的機制,這樣在更新任何字段時,update_time會自動更新,而如果使用int存儲,就需要程序員每次更新表時,重新set這個字段,容易遺忘。

  • 由于int只有4個字節,用它來存儲時間,會在2038年后溢出,而對于timestamp來說,MySQL將其底層存儲統一修改為8個字節,相對來說還是比較容易的。

當然,也并不是建議不用int,這是見仁見智的,不管用timestamp還是int,都沒有致命性問題的。

總結

timestamp本身是沒有時區問題的,時區問題是由于serverTimezone配置錯誤、mysql使用CST這種混亂時區或Entity中將日期定義String類型導致的。

推薦學習:mysql視頻教程

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区
国产在线播放观看| 国产精品美女在线播放| 给我免费播放片在线观看| 天天综合成人网| 黄色小视频免费网站| 亚洲一区二区蜜桃| 亚洲综合日韩欧美| 超碰97人人射妻| 欧美私人情侣网站| 老司机午夜av| 在线观看av网页| www.天天射.com| 最新中文字幕免费视频| 五月婷婷之婷婷| 国产精品嫩草影院8vv8| 五月天中文字幕在线| www.cao超碰| 国产一二三四五| 日韩欧美猛交xxxxx无码| 日韩精品一区二区在线视频| 久久国产精品视频在线观看| 国产亚洲欧美在线视频| 成人在线观看黄| 日韩成人精品视频在线观看| 久久精品国产精品亚洲精品色| 做爰高潮hd色即是空| 99亚洲精品视频| 日韩黄色片在线| 91视频 -- 69xx| 东北少妇不带套对白| 少妇人妻大乳在线视频| 国产欧美精品aaaaaa片| 日韩精品视频一区二区在线观看| 久久久久狠狠高潮亚洲精品| 国语对白做受xxxxx在线中国| 国产91色在线观看| 香蕉视频xxxx| 男人c女人视频| 激情网站五月天| 水蜜桃在线免费观看| 欧美精品久久久久久久免费| 最近中文字幕一区二区| √天堂资源在线| 欧美女人性生活视频| 欧美一级特黄aaa| 无码人妻h动漫| 91麻豆天美传媒在线| 精品国产成人av在线免| 国产精品一区在线免费观看| 成年人在线看片| www.国产在线播放| 亚洲色图偷拍视频| 69堂免费视频| 91精品国产毛片武则天| 99视频在线视频| 欧美不卡在线播放| 日韩视频一二三| 性刺激的欧美三级视频| 日本一道在线观看| 国产一级片黄色| 午夜福利123| 最新天堂在线视频| 国产偷人视频免费| 成人av一级片| 日本在线视频www色| 国产一级做a爰片久久| 草草草视频在线观看| 精品久久久99| 亚洲色图久久久| 99久久激情视频| 青草网在线观看| 影音先锋成人资源网站| www.五月天色| 中文 日韩 欧美| 国产成人在线综合| 国产成人久久777777| 国产在线精品91| 青青青青在线视频| 日本福利视频一区| 欧美精品久久久久久久久久久| 美国av在线播放| 黄色高清视频网站| 九一精品久久久| 亚洲国产成人va在线观看麻豆| 50路60路老熟妇啪啪| 不要播放器的av网站| 国产91对白刺激露脸在线观看| 69堂免费视频| 老头吃奶性行交视频| 国产视频手机在线播放| www.xxx亚洲| 午夜激情福利在线| 国产97色在线 | 日韩| 日本 片 成人 在线| 性生活免费在线观看| 手机在线免费观看毛片| 免费在线激情视频| 五月天亚洲视频| 亚洲成年人专区| 欧美性猛交xxxx乱大交91| www.久久久精品| 大片在线观看网站免费收看| 国产精品视频网站在线观看| 无码精品a∨在线观看中文| 手机看片福利日韩| 一区二区久久精品| 国产美女在线一区| 爱情岛论坛成人| 亚洲色图都市激情| 欧美视频第三页| 两性午夜免费视频| 国产美女网站在线观看| 性chinese极品按摩| 青青草免费在线视频观看| 国产在线精品91| 亚洲理论中文字幕| 欧美变态另类刺激| 男人午夜视频在线观看| 国产在线精品91| 男女视频在线观看网站| 免费看的黄色大片| 天堂av免费看| 黄色免费观看视频网站| www亚洲国产| 亚洲精品一二三四五区| 四虎4hu永久免费入口| av视屏在线播放| 欧美国产日韩激情| 2025韩国大尺度电影| 丁香婷婷激情网| 青青草成人免费在线视频| 中文字幕视频三区| 虎白女粉嫩尤物福利视频| 欧美国产视频一区| 不卡中文字幕在线观看| 可以在线看的黄色网址| 欧美性潮喷xxxxx免费视频看| 两性午夜免费视频| 亚洲欧美自偷自拍另类| www.亚洲天堂网| 日本手机在线视频| 懂色av粉嫩av蜜臀av| 中文字幕66页| 好男人www社区| 成人av一级片| 久久亚洲中文字幕无码| www.欧美黄色| 久久久久久久久久久久久国产| 九九久久久久久| 午夜精品久久久久久久99热影院| 日本xxxxxxx免费视频| 女人扒开屁股爽桶30分钟| www.日本在线播放| 亚洲美免无码中文字幕在线 | 青青青在线视频播放| 欧美国产在线一区| 一级片免费在线观看视频| 波多结衣在线观看| 999在线观看| 亚洲天堂av一区二区| 一级黄色片在线免费观看| 污污的视频免费观看| 午夜国产福利在线观看| 九九热免费在线观看| 99日在线视频| 亚洲一级片免费观看| 18视频在线观看娇喘| 日韩精品久久一区二区| 日韩中文字幕在线免费| 国产美女网站在线观看| 欧美日韩第二页| 中文字幕一区二区三区四区在线视频| 密臀av一区二区三区| 91 在线视频观看| 亚洲 欧洲 日韩| 日韩极品视频在线观看| 国内性生活视频| 黄色手机在线视频| 三级黄色片免费观看| 欧美国产视频一区| 欧美色图另类小说| 国产小视频精品| 国产a级片免费看| www在线观看免费| 天美星空大象mv在线观看视频| 韩国一区二区在线播放| 成人免费性视频| 日本在线一二三区| 99热这里只有精品7| 91视频最新入口| 波多野结衣之无限发射| 欧美日韩怡红院| 久久久国产精华液999999 | 老司机激情视频| 不卡中文字幕在线观看| 欧美精品第三页| 美女av免费在线观看| 日韩人妻无码精品久久久不卡| 成人性做爰片免费视频| 亚洲精品免费一区亚洲精品免费精品一区 |