这是一个微不足道的问题,我添加了一个字段
Alter table MyTbl add datecreated smalldatetime default CONVERT(varchar(10),GetDate(),101)
当我去检查新字段时,它不仅显示日期,还显示时间。我检查表定义(右键单击表 - >在SSMS中修改),它确实说默认值为GETDATE()[默认情况下它丢弃了转换(...)]。为什么会如此。有没有办法只将默认日期提供给datetime字段而不是时间。
我最终离开了时间字段,因为最好在初始测试阶段看到表esp中发生了什么。
答案 0 :(得分:1)
这会将时间段重置为零
DateAdd(day, DateDiff(day, 0, PayDate), 0)
答案 1 :(得分:1)
仅仅因为您要将getdate()
返回的日期时间转换为varchar(10)
,还有另一个从varchar(10)
到datetime
的隐式转换,因为它是您的数据类型字段。
您需要datecreated
字段数据类型为varchar(10)
。
您的alter table
声明应为:
Alter table MyTbl add datecreated varchar(10) default CONVERT(varchar(10),GetDate(),101)
答案 2 :(得分:1)
我刚刚尝试了你的ALTER
声明,它可以按预期工作;当我输入不包含datecreated
的行时,它会将值设置为时间为00:00:00
的日期。
您检查了表格定义并且默认值为GETDATE()
这一事实让我相信该列已经存在且您的ALTER
失败了。