Sql 使用select语句在CREATETABLE语法中定义默认列值

Sql 使用select语句在CREATETABLE语法中定义默认列值,sql,tsql,ddl,Sql,Tsql,Ddl,我正在尝试创建一个表,我希望其中一列的默认值是特定的-请参阅下面的代码: CREATE TABLE dbo.PSTest( modDate datetime default getdate() , [Date] datetime default (SELECT CONVERT (DATE, GETDATE())) ); 我得到以下错误 Msg 1046, Level 15, State 1, Line 28 Subqueries are not allowed in this context.

我正在尝试创建一个表,我希望其中一列的默认值是特定的-请参阅下面的代码:

CREATE TABLE dbo.PSTest(
modDate datetime default getdate()
, [Date] datetime default (SELECT CONVERT (DATE, GETDATE()))
);
我得到以下错误

Msg 1046, Level 15, State 1, Line 28
Subqueries are not allowed in this context. Only scalar expressions are allowed.
我知道我不能这样做,但有办法吗


提前感谢

您不需要子查询:

CREATE TABLE dbo.PSTest(
    modDate datetime default getdate(),
    [Date] datetime default cast(getdate() as date)
);

Date
是否始终与
modDate
在同一天?如果是这样,计算列几乎肯定是一个更好的选择。modDate将是datetime,但在Date中,我不需要任何时间输出元素。仅限于yyyy-mm-dd,不含时间延长。根据当前答案,我得到了日期为-2015-09-22 14:02:31.870和日期为2015-09-22 00:00:00.000的输出。我一点也不想在日期栏上写时间,因为它不能回答我提出的问题。我问这两列是否总是有两个相关的值(即,如果
modDate
被更新,那么
Date
是否也会更新到匹配的日期)?好的,但当我将数据插入表中时,Date列给出的输出为2015-09-22 00:00:00.000。我根本不想在那里显示时间。@FaizSaiyed-然后声明它为
date
,而不是
datetime
。您已经为它指定了一个具有时间组件的数据类型。它必须设置为某个值。是的,这也行。我刚被告知如果我最后得了0分就好了。但谢谢大家#@Faizsayed供参考日期通常可以在您使用的任何客户端应用程序/报告工具中格式化。业务人员很少直接查看SQL查询窗口的输出。