sql的datetime和smalldatetime怎么用?
一般情況下就用datetime就是了,smalldatetime精度太低了,判斷時間的時候很容易弄錯,等你用熟練了sql再使用smalldatetime吧,在c#里面拼一個string類型的sql語句就可以存儲時間,如:string TestSql=" inrt into TestTable t TestDateTime='"+ DateTime.Now.ToString() +"' ";
或者string TestSql=" inrt into TestTable t TestDateTime='2010-3-5' ";
或者string TestSql=" inrt into TestTable t TestDateTime='2010-3-5 11:03:11' ";
上面的代碼復制粘貼到程序里去試試看就會有體會了。
smalldatetime和smalldate的區別
1、一直以為smalldatetime和datetime的差別只是在于時間范圍:
smalldatetime的有效時間范圍1900/1/1~2079/6/6
datetime的有效時間范圍1753/1/1~9999/12/31
所以我判斷如果該值不用到太遠的日期范圍,就會使用smalldatetime。
2、但我忽略了更關鍵的差別,那就是smalldatetime只精準到分,而datetime則可精準到3.33毫秒。
因此,當我怎么存,秒都是00后,才發現原來是smalldatetime惹的禍,待我將類型別改成datetime后,秒的部份就可以正常儲存了。
*****************************************************************************************
SQL Server中,smalldatetime只能精確到分鐘,而datatime可以精確到3%秒(3.33毫秒)。
smalldatetime占用4個字節,前2個字節存儲ba date(1900年1月1日)之后的天數。后2個字節存儲午夜后的分鐘數。
datetime占用8個字節,前4個字節存儲ba date(即1900年1月1日)之前或之后的天數,后4個字節存儲午夜后的毫秒數。
由于datetime的精度是3%秒,這就涉及到小數,毫秒之前可以是冒號,也可以是小數點。使用冒號時表示的意義同時分秒間隔,11:11:11:21表示021毫秒,前面的0省略,而小數點表示的意義
smalldatetime數據類型精確到什么時間單位
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)
sql的datetime和smalldatetime怎么用?
代表日期和一天內的時間的日期和時間數據類型。
datetime
從 1753 年 1 月 1 日到 9999 年 12 月 31 日的日期和時間數據,精確度為百分之三秒(等于 3.33 毫秒或 0.00333 秒)。如下表所示,把值調整到 .000、.003、或 .007 秒的增量。
示例 調整后的示例
01/01/98 23:59:59.999 1998-01-02 00:00:00.000
01/01/98 23:59:59.995,
01/01/98 23:59:59.996,
01/01/98 23:59:59.997, 或
01/01/98 23:59:59.998 1998-01-01 23:59:59.997
01/01/98 23:59:59.992,
01/01/98 23:59:59.993,
01/01/98 23:59:59.994 1998-01-01 23:59:59.993
01/01/98 23:59:59.990 或
01/01/98 23:59:59.991 1998-01-01 23:59:59.990
Microsoft® SQL Server™ 拒絕所有其不能識別為 1753 年到 9999 年間的日期的值。
smalldatetime
從 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)
GO
注釋
Microsoft SQL Server 用兩個 4 字節的整數內部存儲 datetime 數據類型的值。第一個 4 字節存儲 ba date(即 1900 年 1 月 1 日)之前或之后的天數。基礎日期是系統參考日期。不允許早于 1753 年 1 月 1 日的 datetime 值。另外一個 4 字節存儲以午夜后毫秒數所代表的每天的時間。
smalldatetime 數據類型存儲日期和每天的時間,但精確度低于 datetime。SQL Server 將 smalldatetime 的值存儲為兩個 2 字節的整數。第一個 2 字節存儲 1900 年 1 月 1 日后的天數。另外一個 2 字節存儲午夜后的分鐘數。日期范圍從1900 年 1 月 1 日到 2079 年 6 月 6 日,精確到分鐘。
datetime和timestamp的區別
datetime和timestamp是出現在MySQL和SqlServer數據庫中的。
MySQL中datetime和timestamp的區別:
(一)范圍不同。
“datetime” 以'YYYY-MM-DD HH:MM:SS'格式檢索和顯示DATETIME值。支持的范圍為'1000-01-01 00:00:00'到'9999-12-31 23:59:59'TIMESTAMP值不能早于1970或晚于2037
(二)儲存不同。
1,TIMESTAMP
①4個字節儲存(Time stamp value is stored in 4 bytes)
②值以UTC格式保存( it stores the number of milliconds)
③時區轉化 ,存儲時對當前的時區進行轉換,檢索時再轉換回當前的時區。
2,datetime
①8個字節儲存(8 bytes storage)
②實際格式儲存(Just stores what you have stored and retrieves the same thing which you have stored.)
③與時區無關(It has nothing to deal with the TIMEZONE and Conversion.)
注:TIMESTAMP列的顯示格式與datetime列相同。
SqlServer中datetime和timestamp在中用法區別基本都差不多。
datetime :
SqlServer中用兩個 4 字節的整數內部存儲 datetime 數據類型的值。第一個 4 字節存儲 ba date(即 1900 年 1 月 1 日)之前或之后的天數。基礎日期是系統參考日期。不允許早于 1753 年 1 月 1 日的 datetime 值。另外一個 4 字節存儲以午夜后毫秒數所代表的每天的時間。
注:smalldatetime 數據類型存儲日期和每天的時間,但精確度低于 datetime。SQL Server 將 smalldatetime 的值存儲為兩個 2 字節的整數。第一個 2 字節存儲 1900 年 1 月 1 日后的天數。另外一個 2 字節存儲午夜后的分鐘數。日期范圍從1900 年 1 月 1 日到 2079 年 6 月 6 日,精確到分鐘。
timestamp:
timestamp 這種數據類型表現自動生成的二進制數,確保這些數在數據庫中是唯一的。timestamp 一般用作給表行加版本戳的機制。存儲大小為 8 字節。
access中用SQL建立表,按書上打的,但提示smalldatetime定義語法錯誤,是為什么
以下是Access語句:
createtableStudent
(Snochar(5)notnullunique,
Snamechar(20),
Sxchar(1),
BirthdayDATETIME,
Sdeptchar(15));
smalldatetime是SQLServer中的數據類型