Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 启蒙运动需要消除datetime与smalldatetime之间的疑虑_Sql_Sql Server_Sql Server 2005_Date_Datetime Format - Fatal编程技术网

Sql 启蒙运动需要消除datetime与smalldatetime之间的疑虑

Sql 启蒙运动需要消除datetime与smalldatetime之间的疑虑,sql,sql-server,sql-server-2005,date,datetime-format,Sql,Sql Server,Sql Server 2005,Date,Datetime Format,我已经读过了,但还是不明白。希望这里有人能给我解释一下。我有一个查询,它为我的列指定了一个仅限当前日期的值。但是,我想知道如果我的查询如下所示,是否应将新列创建为DATETIME或SMALLDATETIME: Insert into table(col A) Select DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0) As ColA from table B 我想我的select语句已经给出了没有时间的日期值。我对在我的db表中创

我已经读过了,但还是不明白。希望这里有人能给我解释一下。我有一个查询,它为我的列指定了一个仅限当前日期的值。但是,我想知道如果我的查询如下所示,是否应将新列创建为
DATETIME
SMALLDATETIME

  Insert into table(col A)
  Select DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0) As ColA  
  from table B  
我想我的select语句已经给出了没有时间的日期值。我对在我的db表中创建
列A
表示怀疑。我正在使用SQL2005

更新:

所以我的qns是如何在我的db表中创建我的列A?我需要给它添加约束吗?首选哪种数据类型

SQL Server 2005不支持日期数据类型。这将是您真正想要的数据类型

smalldatetime
datetime
都使用时间组件存储日期。这些内容将在中进行解释
Smalldatetime
存储在四个字节中,
datetime
存储在八个字节中


就您的目的而言,它们可能同样有用。差异是可以表示的范围和精度。在这两种情况下,准确度都远低于一天,因此在大多数情况下,这两种方法都适用于存储日期。

您需要问一个明确的问题。这是问答论坛,不是讨论论坛。对不起,如果我不够具体,我会更新。感谢您指出,我添加了一个检查约束(DATEADD(DAY,DATEDIFF(DAY,0,CREATION_D),0)=CREATION_D),但不起作用,我做错了什么?回复:您在注释中的检查约束“未起作用”不是一个有用的诊断。它以什么方式不起作用?尝试应用时出错?允许的时间组件值?您希望允许的不允许的值?还有别的吗如果是这样的话,也许告诉我们你期望它做什么。如果是某种错误,请编辑您的问题并包含完整的脚本,而不是片段。好的,谢谢,您说这两个问题对我的案例同样有用。我也可以用这两种方法吗?那么,在创建列时,我还需要包含约束吗?如果您真的想要一个表示没有时间组件的约束,那么您可以这样做。我倾向于避免约束,将检查放在输入而不是表上(通常使用存储过程接口进行插入和更新)。