1. 程式人生 > >MySQL資料型別 DATETIME和 DATE

MySQL資料型別 DATETIME和 DATE

DATETIME佔用8位元組,是佔用空間最多的一種日期型別。它既顯示了日期,同時也顯示了時間。
其可以表達的日期範圍為“1000-01-01 00:00:00”到“9999-12-31 23:59:59”。
DATE佔用3位元組,可顯示的日期範圍為“1000-01-01”到“9999-12-31”。
在MySQL資料庫中,對日期和時間輸入格式的要求是非常寬鬆的,以下的輸入都可以視為日期型別。
 2011-01-01 00:01:10
 2011/01/01 00+01+10
 20110101000110
 11/01/01 [email protected]@10
其中,最後一種型別中的“11”有些模稜兩可,MySQL資料庫將其視為2011還是1911呢?下面來做個測試:
mysql> SELECT CAST('11/01/01 [email protected]
@10' AS DATETIME) AS datetime\G;
*************************** 1. row ***************************
datetime: 2011-01-01 00:01:10
1 row in set (0.00 sec)

可以看到資料庫將其視為離現在最近的一個年份。

這種寫法11/01/01 [email protected]@10可能不是一個非常好的習慣。如果沒有特別的條件和要求,

還是在輸入時按照標準的“YYYY-MM-DD HH:MM:SS”格式來進行。

在MySQL 5.5版本之前(包括5.5版本),資料庫的日期型別不能精確到微秒級別,任何的微秒數值都會被資料庫截斷,
例如:
mysql> CREATE TABLE t ( a DATETIME );
Query OK, 0 rows affected (0.25 sec)

mysql> INSERT INTO t SELECT '2011-01-01 00:01:10.123456';
Query OK, 1 row affected (0.05 sec)
Records: 1  Duplicates: 0  Warnings: 0

mysql> SELECT * FROM t\G;
*************************** 1. row ***************************
a: 2011-01-01 00:01:10
1 row in set (0.00 sec)

不過MySQL資料庫提供了函式MICROSECOND來提取日期中的微秒值,示例如下:
mysql> SELECT MICROSECOND('2011-01-01 00:01:10.123456')\G;
*************************** 1. row ***************************
MICROSECOND('2011-01-01 00:01:10.123456'): 123456
1 row in set (0.00 sec)


有意思的是, MySQL的CAST函式在強制轉換到DATETIME時會保留到微秒數,不過在插入後同樣會截斷,示例如下:
mysql> SELECT CAST('2011-02-01 00:01:10.123456' AS DATETIME) D\G;
*************************** 1. row ***************************
D: 2011-02-01 00:01:10.123456
1 row in set (0.00 sec)

mysql> INSERT INTO t
 ->SELECT CAST('2011-02-01 00:01:10.123456' AS DATETIME);
Query OK, 1 row affected (0.01 sec)
Records: 1  Duplicates: 0  Warnings: 0

mysql> SELECT * FROM t\G;
*************************** 1. row ***************************
a: 2011-01-01 00:01:10
*************************** 2. row ***************************
a: 2011-02-01 00:01:10
2 rows in set (0.00 sec)

然而從MySQL 5.6.4版本開始,MySQL增加了對秒的小數部分(fractional second)的支援,具體語法為:
type_name(fsp)
其中,type_name的型別可以是TIME、DATETIME和TIMESTAMP。fsp表示支援秒的小數部分的精度,最大為6,表示微秒(microseconds);
預設為0,表示沒有小數部分,同時也是為了相容之前版本中的TIME、DATETIME和TIMESTAMP型別。
對於時間函式,如CURTIME()、SYSDATE()和UTC_TIMESTAMP()也增加了對fsp的支援,例如:
mysql> SELECT CURTIME(4) AS TIME\G;
*************************** 1. row ***************************
TIME: 10:22:37.4456

1 rows in set (0.00 sec)


相關推薦

MySQL資料型別 DATETIME DATE

DATETIME佔用8位元組,是佔用空間最多的一種日期型別。它既顯示了日期,同時也顯示了時間。 其可以表達的日期範圍為“1000-01-01 00:00:00”到“9999-12-31 23:59:59”。 DATE佔用3位元組,可顯示的日期範圍為“1000-01-01”到

MySQL 資料型別BINARYVARBINARY

BINARY和VARBINARY與 CHAR和VARCHAR型別有點類似,不同的是BINARY和VARBINARY儲存的是二進位制的字串,而非字元型字串。也就是說,BINARY和VARBINARY沒有字符集的概念,對其排序和比較都是按照二進位制值進

MySQL資料型別--日期時間型別

MySQL中的多種時間和格式資料型別 日期和時間型別是為了方便在資料庫中儲存日期和時間而設計的。MySQL中有多種表示日期和時間的資料型別。 其中,year型別表示時間,date型別表示日期,time型別表示時間,datetime和timestamp表示日期和時間。實際情

MySQL資料型別 YEARTIME

YEAR型別佔用1位元組,並且在定義時可以指定顯示的寬度為YEAR(4)或YEAR(2),例如: mysql> CREATE TABLE t ( a YEAR(2)); Query OK, 0 rows affected (0.05 sec) mysql> IN

mysql中的datetimedate

datetime:8個位元組;表示日期和時間;表達範圍是“1000-01-01 00:00:00”到“9999-12-31 23:59:59”date:3個位元組;表示日期;表達範圍是“1000-01-01”到“9999-12-31”

【小家SQL】MySql資料型別---日期時間型別的使用(含datetimetimestamp的區別)

每篇一句 練武不練功,到老一場空。 程式設計師應該注重內功的修煉,那才是核心競爭力 說在前面 在這一路學習過來,每次不管看書還是網上看的資料,對於MySQL資料型別中的時間日期型別總是一掃而過,不曾停下來認認真真的研究學習。最近看了一本關於MySql的書

Day054--MySQL, 建立使用者授權, 資料型別, 列舉集合, 約束,唯一, 主鍵,外來鍵

建立使用者和授權 1.建立使用者: # 指定ip:192.118.1.1的mjj使用者登入 create user 'mjj'@'192.118.1.1' identified by '123'; # 指定ip:192.118.1.開頭的mjj使用者登入 create user 'mjj'@'192.118

MySQL建立資料MySQL資料型別

CREATE TABLE IF NOT EXISTS dmdi.bond_sentiment_news( `id` int(12) NOT NULL COMMENT 'id', `title` varchar(480) NULL DEFAULT NULL

MySql----資料型別(數值型別、char/varchar、enum、set、date

一:資料型別分類: 二:數值型別 1.bit bit[(M)] : 位欄位型別。M表示每個值的位數,範圍從1到64。如果M被忽略,預設為1。 例: //表tt3的sno的值有8個位 mysql> create table tt3(age int,sno bit(8))

mysql 資料型別 (最大值 最小值)

1、整型 MySQL資料型別    含義(有符號) tinyint(m)    1個位元組  範圍(-128~127) smallint(m)    2個位元組  範圍(-32768~32767) mediumint(m)    3個位元組  範圍(-8388608

MySQL幾種資料型別精度標度的情況

1、整型 int預設是int(11),建立欄位int(5),當儲存的資料長度大於5時,可以正常儲存,儲存的資料完整顯示; 2、浮點型 float(M,D)和double(M,D) 如果不寫精度和標度,則會按照實際精度值顯示,如果有精度和標度,則會自動將四捨五入的結果插入,不

JavaMySQL資料型別對應一覽

Table 20.25. MySQL Types to Java Types for ResultSet.getObject() MySQL Type Name Return value ofGetColumnCla

MySQL資料型別常用欄位屬性

MySQL中的資料型別大的方面來分,可以分為:日期和時間、數值,以及字串。下面就分開來進行總結。 日期和時間資料型別 MySQL資料型別 含義 date 3位元組,日期,格式:2014-09-18 time 3位元組,時間,格式:08:42:30 dat

Java資料型別MySql資料型別對應表

型別名稱 顯示長度 資料庫型別 JAVA型別 JDBC型別索引(int) 描述 VARCHAR L+N VARCHAR java.lang.String 12 CHAR N CHAR ja

mysql資料型別TEXT BLOB比較

1.blob是二進位制大物件,可以容納可變數數量的資料, 其中blob分為4中型別:TINYBLOB,BLOB,mediumblob和LongBlob,他們容納的長度是不同的. Text同樣也分為四種類型:TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT

mybatis向mysql插入datetimedate的區別

MyBatis3做資料持久層,在欄位中有Date和DateTime型別,在插入資料時只要將實體的屬性設定成Timestamp就會對應mysql的DateTime型別,Date會對應mysql的Date型別。 在MyBatis對映檔案中要表明對映型別。 [htm

mysql資料型別長度

MySQL資料庫中常用欄位型別: 整數型:TINYINT,SMALLINT,INT,BIGINT 小數型:FLOAT,DOUBLE,DECIMAL(M,D) 字元型:CHAR,VARCHAR 日期型:DATETIME ,DATE,TIMESTAMP 備註型:TINYTEXT ,TEXT ,LONGTEXT 

mysql許可權使用注意事項及mysql 資料型別詳解innodb,myisam區別

mysql使用者許可權管理(Grant,Revoke) MySQL可以為不同的使用者分配嚴格的、複雜的許可權。這些操作大多都可以用SQL 指令Grant(分配許可權)和Revoke(回收許可權)來實現。 Grant可以把指定的權 限分配給特定的使用者,如果這個使用者不存在

mysql 資料型別筆記

一. varchar儲存規則: 4.0版本以下,varchar(20),指的是20位元組,如果存放UTF8漢字時,只能存6個(每個漢字3位元組) 5.0版本以上,varchar(20),指的是20字元,無論存放的是數字、字母還是UTF8漢字(每個漢字3位元組),都可以存放20個,最大大小是6553

mysql資料的匯入匯出

  一. mysqldump工具基本用法,不適用於大資料備份   1. 備份所有資料庫: mysqldump -u root -p --all-databases > all_database_sql 2. 備份mysql資料庫:mysql