資料庫存儲時間類型
⑴ 時間在資料庫里用什麼形式保存
Oracle資料庫
數據類型為 DATE
包含 世紀、年、月、日、時、分、秒。
佔用7 個位元組,上面每個部分1 個位元組
sql Server 2005 以前版本
包含兩種數據類型:
smalldatetime
佔用4 位元組,范圍1900-1-1~2079-6-6 精度到¡ 分¡
datetime
佔用8 位元組,范圍1753-1-1~9999-12-31 精度到 百分之三秒
SQL Server 2008 新增
time 00:00:00.0000000 到 23:59:59.9999999
固定 5 個位元組,是使用默認的 100ns 秒的小數部分精度時的默認存儲大小。
date 0001-01-01 到 9999-12-31
固定 3 個位元組
datetime2
日期范圍 0001-01-01 到 9999-12-31
時間范圍 00:00:00 到 23:59:59.9999999
精度小於 3 時為 6 個位元組;精度為 3 和 4 時為 7 個位元組。
datetimeoffset
日期范圍 0001-01-01 到 9999-12-31
時間范圍 00:00:00 到 23:59:59.9999999
時區偏移量范圍 -14:00 到 +14:00
默認值為 10 個位元組的固定大小,默認的秒的小數部分精度為100ns
MySQL
DATE
日期。支持的范圍為'1000-01-01'到'9999-12-31'
DATETIME
日期和時間的組合。支持的范圍是'1000-01-01 00:00:00'到'9999-12-31 23:59:59'。
TIMESTAMP[(M)]
時間戳。范圍是'1970-01-01 00:00:00'到2037 年
TIME
時間。范圍是'-838:59:59'到'838:59:59'。
YEAR[(2|4)]
兩位或四位格式的年。默認是四位格式。
⑵ 資料庫的日期類型欄位該如何選擇
Mysql中經常用來存儲日期的數據類型有三種:Date、Datetime、Timestamp。
Date數據類型:用來存儲沒有時間的日期。Mysql獲取和顯示這個類型的格式為「YYYY-MM-DD」。支持的時間范圍為「1000-00-00」到「9999-12-31」。
Datetime類型:存儲既有日期又有時間的數據。存儲和顯示的格式為 「YYYY-MM-DD HH:MM:SS」。支持的時間范圍是「1000-00-00 00:00:00」到「9999-12-31 23:59:59」。
Timestamp類型:也是存儲既有日期又有時間的數據。存儲和顯示的格式跟Datetime一樣。支持的時間范圍是「1970-01-01 00:00:01」到「2038-01-19 03:14:07」。
所有不符合上面所述格式的數據都會被轉換為相應類型的0值。(0000-00-00或者0000-00-00 00:00:00)
⑶ 資料庫的日期型數據應該用什麼類型接受
1、如果資料庫中存儲時間的數據類型為datetime,那就避免在後台代碼(*.aspx.cs)中轉化時間格式,將格式轉化的任務放到界面代碼(*.aspx)上。
無論獲取的時間是什麼格式的,在後台不要對這個時間的值進行任何操作(比如賦值等,否則系統會將時間隱式轉換),而是直接在界面代碼(*.aspx)用DataBinder、Eval等方法來直接進行格式化:
後台關鍵代碼:
<span style="white-space:pre"> </span>DataTable dt = new NewsManager().SelectById(newsid); //這里得到的dt為從直接資料庫中查詢到的數據
<span style="white-space:pre"> </span> repNews.DataSource =dt;
repNews.DataBind();
前台關鍵代碼:
<span style="white-space:pre"> </span><asp:Repeater ID="repNews" runat="server">
<ItemTemplate>
<p class="con_time">
發布時間:
<%# DataBinder.Eval(Container.DataItem,"createTime","{0:yyyy-MM-dd HH:mm:ss}") %> <%--此處createTime為上面dt中的欄位名--%>
</p>
</ItemTemplate>
</asp:Repeater>
⑷ 資料庫中哪種日期存儲格式,性能會更好
資料庫中日期存儲格式有幾種,需要根據你的需求抉擇:
1、timestamp:既能保證性能又能使用自帶時間日期函數
2、int :適合作時間的比較,但是可讀性差
3、datetime :適合資料庫數據導出,可讀性高,但查詢性能不高。(不推薦)
4、varchar:不支持時區。(不推薦)
⑸ 資料庫存儲日期時間數據時,使用數據類型datetime和datetime2有什麼區別
Datetime:
時間格式,對應於資料庫中的DateTime類型,對應於.NET裡面的System.
DateTime類型。DateTime支持日期從1753年1月1日到9999年12月31日,時間部分的精確度是3.33毫秒,它需要8位元組的存儲空間。
Datetime2:
時間格式,就Sql
Server
2008
裡面新增的欄位類型。對應於資料庫中的DateTime2格式,對應於.NET裡面的System.
DateTime類型。DateTime2則支持從0001年01月01日到9999年12月31日,時間部分的精度是100納秒,佔用6到8位元組的存儲空間,取決於存儲的精度。
datetime2數據類型,類似於之前的datetime類型,不過其精度比較高,可以精確到小數點後面7位(100ns)
⑹ 資料庫中 日期的幾種表示方法
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類型:也是存儲既有日期又有時間的數據。存儲和顯示的格式跟Datetime一樣。支持的時間范圍是「1970-01-01 00:00:01」到「2038-01-19 03:14:07」。
(6)資料庫存儲時間類型擴展閱讀
切記不要用字元串存儲日期
這種存儲日期的方式的優點還是有的,就是簡單直白,容易上手。但是,這是不正確的做法,主要會有下面兩個問題:
1、字元串佔用的空間更大。
2、字元串存儲的日期比較效率比較低(逐個字元進行比對),無法用日期相關的 API 進行計算和比較。
DateTime 類型沒有時區信息的
DateTime 類型是沒有時區信息的(時區無關),DateTime 類型保存的時間都是當前會話所設置的時區對應的時間。
當你的時區更換之後,比如你的伺服器更換地址或者更換客戶端連接時區設置的話,就會導致你從資料庫中讀出的時間錯誤。不要小看這個問題,很多系統就是因為這個問題鬧出了很多笑話。
Timestamp 和時區有關。Timestamp 類型欄位的值會隨著伺服器時區的變化而變化,自動換算成相應的時間,說簡單點就是在不同時區,查詢到同一個條記錄此欄位的值會不一樣。
⑺ 資料庫中日期型數據的長度是幾個位元組
MYSQL,datetime類型長度填8位。
日期型(DATETIME)數據是表示日期數據,用字母D表示。日期的默認格式是{mm/dd/yyyy},其中mm表示月分,dd表示日期,yyyy表示年度,固定長度為8位。日期范圍為介於 100 到 9999 年的日期或時間數值。
(7)資料庫存儲時間類型擴展閱讀:
MySQL主要分為三種類型:字元串,日期和數字(每種類型實際上都有一個二進制類型,但並不常用)。
*字元串分為定長char和不定長度varchar,char以聲明的長度為准,而varchar的長度與值的長度和字元集有關。
*數字和日期均為固定長度的欄位。不同的類型具有不同的長度。例如,Datetime是5.6.4之後的5個位元組,之前的是8個位元組;timestamp是4個位元組,因為其存儲整數,小數部分的長度通常與位數有關。
⑻ sql資料庫中的時間類型
滿意答案。9級2010-11-29使用nvarchar對於前期的實現比較容易,但性能及後期使用及後期需求開發比較困難
如按時間排序,資料庫類型校驗,根據時間段查詢,根據時間的分組統計等等方面造成的影響比較大
追問:
如果用datetime
我的MyEclipse用Hibernate轉換時是timestamp類型的
在用模糊查詢查時間時有點糾結啊
老是報不能轉換的錯誤
回答:
用hibernate啊
那你在配置文件注入類型不用時間戳
改成這個試試java.util.Date
補充:
hibernate項目好幾年沒做過了
原來在資料庫時間建模和操縱時習慣用java.sql.Timestamp與資料庫中DateTime對應,但業務流通層,模型里還是用java.util.Date
因為這些時間直接的轉換都是一樣的方便,而且這樣做邏輯理解上比較直觀
記憶中是沒有出現過錯誤,Timestamp在現在使用數據源時經常使用
追問:
知道用date類型的哇
但是hibernate自動生成的就是timestamp類型
不改配置文件
就用timestamp怎麼做啊?總不能每次生成就改一次配置文件吧.....
追問:
還有我做的是模糊查詢
在form裡面時間又是string類型的
轉換有點麻煩
回答:
你在createSQLQuery方法後面在使用
addScalar方法傳入你datetime的實體對應名和hibernate類型試一下吧
補充:
這個的確比較麻煩,你可以寫個公共轉換方法進行轉換
就是字元串根據你的時間格式進行取出時間long
然後轉換就可以了
大概這樣子
SimpleDateFormat
simpleDateFormat
=
new
SimpleDateFormat();
⑼ 資料庫datetime是什麼類型
datetime類型:可用於需要同時包含日期和時間信息的值。
datetime:MySQL 以 'YYYY-MM-DD HH:mm:ss'格式檢索與顯示 DATETIME 類型。
DateTime日期和時間部分,可以表示1753年1月1日00:00:00.000到9999年12月31日23:59:59.997之間的日期范圍,精確到3.33ms,它需要8位元組的存儲空間,其中前4位元組用於存儲1900年1月1日之前或之後的天數。該值分為正數和負數,正數表示此日期之後的天數,負數表示此日期之前的天數;最後4個位元組用於存儲從零開始指定的時間之後的毫秒數。
(9)資料庫存儲時間類型擴展閱讀
在MySQL中創建表時,
通過類型介紹,可以方便地選擇正確的數據類型。然而,選擇datetime或timestamp戳可能有點困難。這兩種日期時間類型各有優點:datetime的日期范圍比較大;timestamp的存儲空間比較小,只有日期時間的一半。
此外,timestamp類型的列還有一個特性:默認情況下,在插入和更新數據時,timestamp列將自動填充/更新為當前的(CURRENT_TIMESTAMP)的意思是如果你不在乎,MySQL會幫你處理的。
⑽ 資料庫的日期類型
1. 數據類型
MS SQL Server 2005 有 datetime 和 smalldatetime 兩種格式的日期時間數據類型。注意:沒有單獨的日期或時間類型。
2.資料庫內部用兩個 4 位元組的整數存儲 datetime 數據類型的值。第一個 4 位元組存儲基礎日期(即 1900-1-1, base date )之前或之後的日期。日期范圍為 1753-1-1 至 9999-12-31 。當日期為 1900-1-1 時值為 0 ;之前的日期是負數;之後日期是正數。另外一個 4 位元組存儲以午夜後三又三分之一( 10/3 )毫秒數所代表的每天的時間。精確度為百分之三秒(等於 3.33 毫秒或 0.00333 秒)。如下表所示,把值調整到 .000 、 .003 、或 .007 秒的增量。
3.SQL 如下:
查詢中,我們常常需要搜索指定日期范圍內的數據,比如返回 1998-01-01 當天內的數據,你可能會這樣寫:
Date >= '1998-01-01 00:00:00.000' and date <= '1998-01-01 23:59:59.999'
根據上面的調整規則,其實這句語句的實際搜索范圍為:
date >= '1998-01-01 00:00:00.000' and date <= '1998-01-02 00:00:00.000' 你會看到這包括了 1998-01-02 的數據,所以最好的正確的搜索語句為:
date >= '1998-01-01 00:00:00.000' and date < '1998-01-02 00:00:00.000'
4. smalldatetime 數據類型存儲日期和每天的時間,但精確度低於 datetime 。 SQL Server 將 smalldatetime 的值存儲為兩個 2 位元組的整數。第一個 2 位元組存儲 1900-1-1 後的天數。另外一個 2 位元組存儲午夜後的分鍾數。日期范圍從 1900-1-1 到 2079-6-6 ,時間精確到分鍾。 29.998 秒或更低的 smalldatetime 值向下舍入為最接近的分鍾, 29.999 秒或更高的 smalldatetime 值向上舍入為最接近的分鍾。
--returns time as 12:35
SELECT CAST ( '2000-05-08 12:35:29.998' AS smalldatetime )
GO
--returns time as 12:36
SELECT CAST ( '2000-05-08 12:35:29.999' AS smalldatetime )
GO4.