sql server的一些简单问题 让我很蛋疼

wenjunsu 2010-08-20 11:28:50
我定义了一个叫shit的表。如下
列名 数据类型
md5 char(32) 主键
userName varchar(30)
storeTime DateTime

然后 我写了如下一句

insert into shit values(123,123,123)

插入成功 我疑惑了 更蛋疼了

char不是定长的嘛。。我写123。。没到32位都可以插入
DateTime 更让我蛋疼 123怎么会是DateTime


哪位仁兄可以解释一下。我用的SQL SERVER 2008
...全文
90 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
wenjunsu 2010-08-20
  • 打赏
  • 举报
回复
多谢SQLCenter和lg314 这么晚了 还在帮忙 顶你们的肺
wenjunsu 2010-08-20
  • 打赏
  • 举报
回复
算是有点明白了。不过还是有点疑惑。。唉只怪自己学得太烂。。有待加强啊。。
SQLCenter 2010-08-20
  • 打赏
  • 举报
回复
datetime本来就是一个浮点数
SQLCenter 2010-08-20
  • 打赏
  • 举报
回复

create table # (d datetime)
insert # select 123
select *, datediff(day, '1900-01-01', d) diff from #
/*
d diff
----------------------- -----------
1900-05-04 00:00:00.000 123
*/
lg314 2010-08-20
  • 打赏
  • 举报
回复
刚才试了下,确实是1是1天
123表示1900-01-01(基准时间) 以后过了123天,就是1900-05-04号.
wenjunsu 2010-08-20
  • 打赏
  • 举报
回复
插入的不是时间 它该会报错吧!!!
SQLCenter 2010-08-20
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 wenjunsu 的回复:]

dateTime那个没看懂 。。什么*天???什么意思??
[/Quote]

0 = 1900-01-01 00:00:00.000
123 大概应该是1900年4月初某日
wenjunsu 2010-08-20
  • 打赏
  • 举报
回复
dateTime那个没看懂 。。什么*天???什么意思??
lg314 2010-08-20
  • 打赏
  • 举报
回复
隐式转换
char定长,123后面自动补空格,datetime保存的是一个特定时间的偏移量,123转换成特定时间过123*天(不一定是天,有可能是秒)的时间
wenjunsu 2010-08-20
  • 打赏
  • 举报
回复
三楼:板凳
wenjunsu 2010-08-20
  • 打赏
  • 举报
回复
坐沙发
wenjunsu 2010-08-20
  • 打赏
  • 举报
回复
沙发自己坐

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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