smalldatetime的类型是不是只能精确到分钟?

happyegg 2004-12-26 11:00:25
数据库中有一个createDate的字段定义为smalldatetime
我无论使用数据倒入,或者insert into table(createDate) values('2004-12-12 12:12:12')
或者insert into table(createDate) values(getdate()),之后查询数据库发现这个字段都是只精确到分钟,即是'2004-12-12 12:12:00'.

我想问的是这是因为我的数据库有问题,还是odbc有问题,或者是smalldatetime根本就是只能精确到分钟的?

因为这个数据库是别人设计的,所以如果smalldatetime只能精确到分钟的话,可能要使用另外一种类型来代替,那么,使用哪种类型比较好?

还有,因为之前的很多程序是别人写的,如果我将smalldatetime改成另外一种类型的话,那么源程序会不会出错?也就是是否有特殊的sql函数只对smalldatetime有效,而我使用了其他的数据类型就可能出错?

多谢
...全文
414 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
dulei115 2004-12-27
  • 打赏
  • 举报
回复
直接改为datetime类型就可以了
yingqing 2004-12-27
  • 打赏
  • 举报
回复
datetime

從 1753 年 1 月 1 日到 9999年 12 月 31 日的日期時間資料,精確度到 300 分之 1 秒,即 3.33 毫秒。值會捨入成 .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, or
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 or
01/01/98 23:59:59.991 1998-01-01 23:59:59.990


SQL Server 會拒絕介於 1753 和 9999 之間且無法辨識為日期的所有值。

smalldatetime

日期及時間資料從西元 1900 年 1 月 1 日到西元 2079 年 6 月 6 日,精準度為分。29.998 秒或更小的 smalldatetime 值將捨棄尾數成為最接近的分;29.999 秒或更大的值將補足尾數成為最接近的分。

--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

備註
具有 datetime 資料型別的值,在 Microsoft® SQL Server™ 內部是以兩個 4 位元組整數的形態儲存。前 4 個位元組儲存 base 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 日,精確度到分鐘。

guanshiyu123 2004-12-26
  • 打赏
  • 举报
回复
只能到分钟
SQL Server 将 smalldatetime 的值存储为两个 2 字节的整数。第一个 2 字节存储 1900 年 1 月 1 日后的天数。另外一个 2 字节存储午夜后的分钟数。日期范围从1900 年 1 月 1 日到 2079 年 6 月 6 日,精确到分钟。
用datetime吧
datetime 精确度为百分之三秒
happyegg 2004-12-26
  • 打赏
  • 举报
回复
如果smalldatetime是可以支持到秒的,那么是不是我哪里设错了,怎么改才能精确到秒?

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧