sql datetime 赋值错误

来源:百度知道 编辑:UC知道 时间:2024/05/07 02:58:50
一个表
CREATE TABLE worker
(wno INT PRIMARY KEY,
wname CHAR(8),
sex CHAR(2),
birthday DATETIME,
party BIT,
wdate DATETIME,
dno INT,
FOREIGN KEY (dno) REFERENCES depart (dno)
);

插入语句
INSERT
INTO worker
VALUES(7,'刘夫文','男',01/11/42,0,08/10/60,2);

为什么从表里面看的时候 应该是01/11/42和08/10/60的地方是1900-01-01 00:00:00.000啊···

如果插入的时候 用的VALUES(7,'刘夫文','男','01/11/42',0,'08/10/60',2);就会是类型出错了 成了char向datetime变换了
如果是
INSERT
INTO worker
VALUES(9,'刘夫文','男',1942-01-11,0,1960-08-10,2);
的话

记录中的两个时间分别是1905-04-15 00:00:00.000
1905-04-27 00:00:00.000

怎么回事啊

如果日期加上引号的话类型不匹配出错了 成立char的了

INSERT
INTO worker
VALUES(9,'刘夫文','男',cast('1942-01-11' as datetime),0,cast('1960-08-10' as datetime),2);

你输入的日期格式不对

INSERT
INTO worker
VALUES(7,'刘夫文','男','2009-1-1',0,'2009-1-2',2);

插入时日期的也要加单引号,你那个没加单引号。

看你数据库的时间格式
不是所有的数据库都会把08/10/60认为是时间格式
还是用规范的时间格式吧yyyy-mm-dd(2009-04-08)

VALUES(7,'刘夫文','男','01/11/42',0,'08/10/60',2);
这种日期格式是允许的。。 只是你写的'01/11/42'和'08/10/60'已经溢值了。
正确的写法是:'01/11/1942', '08/10/1960'
其实我也没这种书写习惯。。 我都是用'2008-01-01'这种日期格式的~~~