mysql存儲日期
A. mysql 時間欄位用什麼類弄,長度是多少
mysql時間欄位用:Date、Datetime和Timestamp。
(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」。
(3)「Timestamp」類型:存儲日期和時間的數據。 存儲和顯示格式與日期時間相同。 支持的時間長度范圍是「 1970-01-01 00:00:01」至「 2038-01-19 03:14:07」。
所有不符合上述格式的數據都將轉換為0值的相應類型。
(1)mysql存儲日期擴展閱讀:
MySQL主要分為三種類型:字元串,日期和數字(每種類型實際上都有一個二進制類型,但並不常用)。
*字元串分為定長char和不定長度varchar,char以聲明的長度為准,而varchar的長度與值的長度和字元集有關。
*數字和日期均為固定長度的欄位。 不同的類型具有不同的長度。 例如,Datetime是5.6.4之後的5個位元組,之前的是8個位元組; timestamp是4個位元組,因為其存儲整數,小數部分的長度通常與位數有關。
B. mysql資料庫里的日期用timestamp還是datetime好
mysql資料庫里的日期用timestamp還是datetime好 (1)4個位元組儲存
(2)值以UTC格式保存
(3)時區轉化 ,存儲時對當前的時區進行轉換,檢索時再轉換回當前的時區。
(4)TIMESTAMP值不能早於1970或晚於2037!
timestamp在資料庫里實際記載的時間是國際標准時間,同一個timestamp值在不同的時區檢索出來的日期時間是不一樣的,因為系統會根據時區的不同進行自動時區轉換,而datetime則不會進行轉換時區轉換,存儲時是什麼日期時間,檢索出來的就是存入時的日期時間,它不會有變化。至於這兩種日期時間類型哪種好是沒有定論的,要根據實際情況和應用需求做出取捨。
請注意由於無需實施時區轉換,系統處理dateime所產生的系統開銷要比timestamp小。
沒什麼好不好的,方便省事才是王道。都用datetime 你說呢,誰在乎那點存儲
類型
類型 存儲需求 格式 時間范圍
datetime 8個位元組 yyyy-mm-dd hh-mm-ss 1000-01-01 00:00:00 到9999-12-31 23:59:59 timestamp 4個位元組 yyyy-mm-dd hh-mm-ss 1970-01-01 00:00:00 到2037-12-31 23:59:59
timestamp類型會有時區變數的影響,跨時區使用時應注意
datetime 8個位元組 yyyy-mm-dd hh-mm-ss 1000-01-01 00:00:00 到9999-12-31 23:59:59
timestamp 4個位元組 yyyy-mm-dd hh-mm-ss 1970-01-01 00:00:00 到2037-12-31 23:59:59
timestamp類型會有時區變數的影響,跨時區使用時應注意
沒什麼好不好的,方便省事才是王道。都用datetime 你說呢,誰在乎那點存儲 類型 類型 存儲需求 格式 時間范圍 datetime 8個位元組
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」。
TIMESTAMP列用於INSERT或UPDATE操作時記錄日期和時間。如果你不分配一個值,表中的第一個TIMESTAMP列自動設置為最近操作的日期和時間。也可以通過分配一個NULL值,將TIMESTAMP列設置為當前的日期和時間。
TIMESTAMP值返回後顯示為'YYYY-MM-DDHH:MM:SS'格式的字元串,顯示寬度固定為19個字元。如果想要獲得數字值,應在TIMESTAMP列添加+0。
注釋:MySQL4.1以前使用的TIMESTAMP格式在MySQL5.1中不支持;關於舊格式的信息參見MySQL4.1參考手冊。
datetime
1. 佔用8個位元組
2. 允許為空值,可以自定義值,系統不會自動修改其值。
3. 實際格式儲存(Just stores what you have stored and retrieves the same thing which you have stored.)
4. 與時區無關(It has nothing to deal with the TIMEZONE and Conversion.)
5. 不可以設定默認值,所以在不允許為空值的情況下,必須手動指定datetime欄位的值才可以成功插入數據。
6. 可以在指定datetime欄位的值的時候使用now()變數來自動插入系統的當前時間。
結論:datetime類型適合用來記錄數據的原始的創建時間,因為無論你怎麼更改記錄中其他欄位的值,datetime欄位的值都不會改變,除非你手動更改它。
timestamp
1. 佔用4個位元組
2. 允許為空值,但是不可以自定義值,所以為空值時沒有任何意義。
3. TIMESTAMP值不能早於1970或晚於2037。這說明一個日期,例如'1968-01-01',雖然對於DATETIME或DATE值是有效的,但對於TIMESTAMP值卻無效,如果分配給這樣一個對象將被轉換為0。
4.值以UTC格式保存( it stores the number of milliseconds)
5.時區轉化 ,存儲時對當前的時區進行轉換,檢索時再轉換回當前的時區。
6. 默認值為CURRENT_TIMESTAMP(),其實也就是當前的系統時間。
7. 資料庫會自動修改其值,所以在插入記錄時不需要指定timestamp欄位的名稱和timestamp欄位的值,你只需要在設計表的時候添加一個timestamp欄位即可,插入後該欄位的值會自動變為當前系統時間。
8. 以後任何時間修改表中的記錄時,對應記錄的timestamp值會自動被更新為當前的系統時間。
結論:timestamp類型適合用來記錄數據的最後修改時間,因為只要你更改了記錄中其他欄位的值,timestamp欄位的值都會被自動更新。
看完這個比較你就知道用哪個好啦
我們公司一般用datatime,可控性比較強
jdbc查詢Mysql資料庫的日期問題
你沒說錯!
查出來可以保存為String類型 具體轉化一下就OK了
BBSXP 用的MYSQL資料庫還是MSSQL資料庫
BBSXP同時支持Aess資料庫和MSSQL資料庫
在Config.asp文件里定義:
IsSqlDataBase=1 '定義資料庫類別,0為Aess資料庫,1為SQL資料庫
不知道你是哪個版本,在BBSxp 2008 SP2里Config.asp文件在根目錄下。內容如下:
<%
InstallIPAddress="127.0.0.1" '安裝BBSXP的IP地址,針對install.asp的訪問許可權
TablePrefix="BBSXP_" '資料庫表的前輟名(一般不用更改)
IsSqlDataBase=0 '定義資料庫類別,0為Aess資料庫,1為SQL資料庫
If IsSqlDataBase=0 Then
'''''''''''''''''''''''''''''' Aess資料庫設置 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''
SqlDataBase = "database/bbsxp2008.mdb" '資料庫路徑
SqlProvider = "Microsoft.Jet.OLEDB.4.0" '驅動程序[ Microsoft.Jet.OLEDB.4.0 Microsoft.ACE.OLEDB.12.0 ]
SqlPassword = "" 'ACCESS資料庫密碼
Connstr="Provider="&SqlProvider&";Jet Oledb:Database Password="&SqlPassword&"; Data Source="&Server.MapPath(SqlDataBase)
SqlNowString="Now()"
SqlChar="'"
IsSqlVer="ACCESS"
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Else
'''''''''''''''''''''''''''''' SQL資料庫設置 ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
SqlLocalName = "(local)" '連接IP [ 本地用 (local) 外地用IP ]
SqlUserName = "sa" 'SQL用戶名
SqlPassword = "1234" 'SQL用戶密碼
SqlDataBase = "bbsxp" '資料庫名
SqlProvider = "SQLOLEDB" '驅動程序 [ SQLOLEDB SQLNCLI ]
ConnStr="Provider="&SqlProvider&"; User ID="&SqlUserName&"; Password="&SqlPassword&"; Initial CataLog="&SqlDataBase&"; Data Source="&SqlLocalName&";"
SqlNowString="GetDate()"
IsSqlVer="MSSQL"
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
End If
'''''''''''''''''''''''''' 以下為專業人員設置選項,普通用戶請勿修改 ''''''''''''''''''''''''''
Session.CodePage="936" '936(簡體中文) 950(繁體中文) 65001(Unicode)
BBSxpCharset="GB2312" 'GB2312(簡體中文) Big5(繁體中文) UTF-8(Unicode)
Response.Charset=BBSxpCharset
Response.Buffer=True
%>
註:
上面bbsxp7b1版本用的是Aess資料庫,因為IsSqlDataBase=0
mysql資料庫可以修改表的日期格式嗎
日期型的欄位 存儲的格式是固定的不可以修改, 需要輸出時 轉換成需要的格式, 如果你不想輸出時轉換 那麼需要 設為字元型的, 存儲時轉換. 總之 不管先轉還是後轉 ,一定要轉
C. 如何向mysql資料庫中插入日期
java中有date和datetime,mysql中也有date和datetime,這里我們來說說mysql中的date和datetime。
1 mysql中的date和datetime
1.1 DATETIME
類型可用於需要同時包含日期和時間信息的值。MySQL 以:
『YYYY-MM-DD HH:MM:SS』
格式檢索與顯示 DATETIME 類型。支持的范圍是:
『1000-01-01 00:00:00』
到
『9999-12-31 23:59:59』。
(「支持」的含義是,盡管更早的值可能工作,但不能保證他們均可以。)
1.2 DATE
類型可用於需要一個日期值而不需要時間部分時。MySQL 以
『YYYY-MM-DD』
格式檢索與顯示DATE值。支持的范圍則是
『1000-01-01』
到
『9999-12-31』。
2 與java數據的交互
能看出來mysql中的date和datetime區別還是挺大的,date沒有保存時間。但是java中的date(java.util.Date)記錄的還是挺細的,日期和時間都可以記下來,那麼現在問題來了,如果想在mysql中存儲日期和時間,也就是用datetime,而在數據中應該如何對應呢?
我使用hibernate測了一下,發現當把mysql資料庫中設置了datetime,反向工程生成的hbm.xml文件中,使用的是timestamp,如下:
<property name="Publishdate" column="publishdate" type="timestamp" not-null="false" length="10" />1
反向生成java的pojo時,生成的還是Date。
由此可見對於mysql中datetime,與java中的date,如果要使二者正確交互,中間要使用timestamp。
如果要在JAVA中直接插入MySql的datetime類型,則可以使用:
Date date = new Date();
Timestamp timeStamp = new Timestamp(date.getTime());12
再用setTimestamp()設置資料庫中的「日期+時間」。
這樣放入資料庫的就是「yyyy-mm-dd hh:mm:ss」格式的數據。
注意,mysql中如果使用date而不是datetime是保存不下「日期+時間」的,只能保存「時間」。
D. mysql日期存儲格式的問題
MySQl中有多種表示日期和時間的數據類型。其中YEAR表示年份,DATE表示日期,TIME表示時間,DATETIME和TIMESTAMP表示日期和實踐。它們的對比如下:
YEAR ,位元組數為1,取值范圍為「1901——2155」
DATE,位元組數為4,取值范圍為「1000-01-01——9999-12-31」
TIME,位元組數為3,取值范圍為「-838:59:59——838:59:59」
DATETIME,位元組數為8,取值范圍為「1000-01-01 00:00:00——9999-12-31 23:59:59」
TIMESTAMP,位元組數為4,取值范圍為「19700101080001——20380119111407」
當插入值超出有效取值范圍時,系統會報錯,並將零值插入到資料庫中。