SQL db中的单独存储年、月值

SQL db中的单独存储年、月值,sql,datetime,Sql,Datetime,这给了我错误 从字符串转换日期和/或时间时,转换失败 最好通过为列指定数据类型日期,将日期存储在单个列中。像这样储蓄是没有效率的 使用数据类型DATE insert into Salary (Year, Month, Day, Amount, Deduction, Employee_ID) values ('2012', '12', '4', '400', '50', '6') 如果这不是你要找的,请告诉我。希望这能有所帮助:)您的问题已在对您的请求的评论中得到回答。确保使用正确的数据类型,并

这给了我错误

从字符串转换日期和/或时间时,转换失败


最好通过为列指定数据类型日期,将日期存储在单个列中。像这样储蓄是没有效率的

使用数据类型
DATE

insert into Salary (Year, Month, Day, Amount, Deduction, Employee_ID)
values ('2012', '12', '4', '400', '50', '6')

如果这不是你要找的,请告诉我。希望这能有所帮助:)

您的问题已在对您的请求的评论中得到回答。确保使用正确的数据类型,并确保在访问列时类型匹配

但是,我想用一个词来表示年、月、日整数与一个日期列:

当然,通常你会将日期存储在日期列中。这就是数据类型
date
的目的。但有理由不这样做,而是将日期存储在单独的整数列中

在您的示例中,月和日可以为空。然后,您可以输入不同类型的工资:一个月的工资(给定年+月)、一年的特殊工资(仅给定年)、在某一天授予的工资,例如成功完成的项目


简而言之:如果日期的一部分可以为null,则使用单独的整数列。如果没有,请使用日期列。

发布表结构。。只需读取错误。。。您试图以与表结构不兼容的格式插入varchar,甚至不知道其结构,我的猜测是,您试图将12和4传递到日期或日期时间字段中,但这是不允许的,因为它试图将这些字段转换为有效日期,而12和4的信息不足以做到这一点。您应该使用适当的
date
数据类型。Buf如果您坚持将它们存储在单独的列中,那么至少使用数字,而不是字符串<代码>'2012'是一个字符文本
2012
是SQL中的一个数字。请不要对货币值使用
double
double
容易出现舍入错误-不推荐-改用
decimal(p,s)
并对
p
(精度-总位数)和
s
(刻度-小数点后的位数)使用适当的值,非常感谢@马克不知道。从现在起,我将遵循你的建议。
Column name            datatype
------------           -------    
EmployeeId             Int
Salary_Date            Date 
Amount                 Double