Sql server 如何使数据类型与1980年一样,而不是T-SQL的14.08.1980?
我正在尝试在Transact-Sql中创建一个列,并希望使该列的类型仅为一年。例如1980年,而不是1980年8月14日。谢谢..您需要使用: 您需要使用:Sql server 如何使数据类型与1980年一样,而不是T-SQL的14.08.1980?,sql-server,tsql,Sql Server,Tsql,我正在尝试在Transact-Sql中创建一个列,并希望使该列的类型仅为一年。例如1980年,而不是1980年8月14日。谢谢..您需要使用: 您需要使用: 如果列是DATETIME,请使用DATEPART()函数: DECLARE @DATES TABLE ( ID INT , VALUE DATETIME); DECLARE @NUM INT = 3; WHILE @NUM >=0 BEGIN INSERT INTO @DATES VALUES (@NUM,
如果列是
DATETIME
,请使用DATEPART()
函数:
DECLARE @DATES TABLE ( ID INT , VALUE DATETIME);
DECLARE @NUM INT = 3;
WHILE @NUM >=0
BEGIN
INSERT INTO @DATES VALUES (@NUM, DATEADD(YY,-@NUM,GETDATE() ) );
SET @NUM = @NUM -1;
END
SELECT ID , VALUE , DATEPART( YY , VALUE) [YEAR] FROM @DATES
ORDER BY ID ASC;
如果您参考
Create Type
,则可以看到。如果您的列是DATETIME
,请使用DATEPART()
函数:
DECLARE @DATES TABLE ( ID INT , VALUE DATETIME);
DECLARE @NUM INT = 3;
WHILE @NUM >=0
BEGIN
INSERT INTO @DATES VALUES (@NUM, DATEADD(YY,-@NUM,GETDATE() ) );
SET @NUM = @NUM -1;
END
SELECT ID , VALUE , DATEPART( YY , VALUE) [YEAR] FROM @DATES
ORDER BY ID ASC;
如果参考
创建类型
,则可以看到。如果希望在列中仅存储年份,则可以使用SMALLINT数据类型。如果收到的输入格式为datetime,并且您只想从中捕获年份部分,则在insert语句中使用DATEPART(year,datetime)以仅使用年份。如果您只想在列中存储年份,则可以使用SMALLINT数据类型。如果收到的输入格式为datetime,并且您只想从中捕获年份部分,则在insert语句中使用DATEPART(年份,datetime)以仅使用年份。年份是整数值。
假设它只是一个你想要的整数,而不是一个实际的日期,你可以使用像
DECLARE @data TABLE ( ID INT , [Year] INT);
INSERT INTO @data [Year] VALUES (1980);
SELECT ID, [Year] FROM @data;
年份是整数值。
假设它只是一个你想要的整数,而不是一个实际的日期,你可以使用像
DECLARE @data TABLE ( ID INT , [Year] INT);
INSERT INTO @data [Year] VALUES (1980);
SELECT ID, [Year] FROM @data;
如果年份值在最后4位是通用的,则可以轻松使用以下值:
右(列名称,4)作为年值
如果年值是公共的,则最后4位数字可以轻松使用以下数字:
RIGHT(column\u name,4)作为YearValue
通过更改数据类型,数据不会更改。您需要手动更新记录,使其仅具有年份,然后将数据类型更改为small Inti如果要保留基础日期,请使用创建一个新的计算列,或创建一个视图来替换使用相同日期列的日期列。您应该包含实际的架构定义以获得有效答案。如果您的列存储的是文本14.08.1980
的varchar
或nvarchar
,而不是datetime
,则需要另一种解决方案。Filburt 11,如何在此处添加照片?不要使用屏幕截图发布架构信息-右键单击Sql Management Studio中的表并选择“脚本为->创建到->剪贴板“并复制到此处的帖子。通过更改数据类型,数据不会更改。”。您需要手动更新记录,使其仅具有年份,然后将数据类型更改为small Inti如果要保留基础日期,请使用创建一个新的计算列,或创建一个视图来替换使用相同日期列的日期列。您应该包含实际的架构定义以获得有效答案。如果您的列存储的是文本14.08.1980
的varchar
或nvarchar
,而不是datetime
,则需要另一种解决方案。Filburt 11,如何在此处添加照片?不要使用屏幕截图发布架构信息-右键单击Sql Management Studio中的表并选择“脚本为->创建到->剪贴板”并复制到您的帖子。