仅存储日期,而不是datetime字段中的时间

时间:2011-10-25 14:12:37

标签: sql sql-server-2005 datetime date

这是一个微不足道的问题,我添加了一个字段

Alter table MyTbl add datecreated smalldatetime default CONVERT(varchar(10),GetDate(),101)

当我去检查新字段时,它不仅显示日期,还显示时间。我检查表定义(右键单击表 - >在SSMS中修改),它确实说默认值为GETDATE()[默认情况下它丢弃了转换(...)]。为什么会如此。有没有办法只将默认日期提供给datetime字段而不是时间。

我最终离开了时间字段,因为最好在初始测试阶段看到表esp中发生了什么。

3 个答案:

答案 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失败了。