在SQL db中分隔存储年份,月份值

时间:2015-02-18 10:49:48

标签: sql datetime

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

它给了我错误

  

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

2 个答案:

答案 0 :(得分:0)

最好通过指定列的数据类型日期将日期存储在单个列中。像这样保存效率不高。

使用数据类型DATE

Column name            datatype
------------           -------    
EmployeeId             Int
Salary_Date            Date 
Amount                 Double

如果这不是您想要的,请告诉我。希望这会有所帮助:)

答案 1 :(得分:0)

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

但是,我想对年,月,日整数和一个日期列说一句话:

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

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

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