如何将year指定为数据类型?

时间:2015-06-18 19:51:57

标签: sql sql-server-2008 tsql ssms-2012

我正在创建一个表,并希望将一个字段存储为日期数据类型。但是我只想存储年份而不是其他信息(即:月,日或时间。)

这是我到目前为止所做的:

CREATE TABLE Project
(ProjectID int not null identity(1,1) unique
,PreviousYear1 date                         -- I need this format: (YYYY)
)

关于如何存储一年只有日期数据类型的任何建议?我在ssms -2012工作。我的目标是在不必转换数据类型或将其更改为仅显示年份的情况下实现此目的。

4 个答案:

答案 0 :(得分:2)

CREATE TABLE Project
(ProjectID int not null identity(1,1) unique
,PreviousYear1 smallint   
 CONSTRAINT CHK_PreviousYear1_validity 
   CHECK (PreviousYear1 >= 1000 and PreviousYear1 <= 9999)                       
)

smallint上升至32,767
因此,您将使用更新并插入触发器以限制为1000 - 9999
或者更可能是1900 - 9999

检查约束是一个更好的答案
我从Roit借来,给那张支票

答案 1 :(得分:2)

下面的SQL将向您展示如何使用检查约束来执行此操作(根据您的要求更新年份范围):

CREATE TABLE Project
  (
    ProjectID int not null identity(1,1) unique,
    PreviousYear1 int 

    CONSTRAINT CHK_PreviousYear1_validity 

    CHECK (PreviousYear1 > 1900 and len(PreviousYear1) = 4)                     
  )

答案 2 :(得分:0)

您应该使用INT数据类型并在表上放置一些检查约束来强制使用合理的值,例如没有负数等。 Date数据类型就是完整的日期。

答案 3 :(得分:-2)

我们不能,但您可以使用:

CREATE TABLE Project(
    ProjectID int not null identity(1,1) unique
    ,PreviousYear1 VARCHAR(4) -- To save the year only, INT it's better ;)
)

当你保存一条记录时,只需输入一年的字符串:)

INSERT INTO Project(PreviousYear1) VALUES ('1994'),('2015')