【发布时间】:2019-10-31 08:06:21
【问题描述】:
谁能帮帮我,我有以下 TSQL 抛出错误(它是表视图的一部分)。
SELECT MAX([WEEK]) FROM MyTable WHERE [Year] = DATEPART(YYYY, GETDATE())
这是视图案例语句的一部分:
CASE
WHEN [WEEK] <= (SELECT MAX([WEEK]) FROM MyTable WHERE [Year] = DATEPART(YYYY, GETDATE())) THEN
[YEAR]
END YTD,
这会引发错误:操作数类型冲突:日期与 int 不兼容
表定义为:
CREATE TABLE [dbo].[MyTable](
[Week] [tinyint] NULL,
[Year] [date] NULL,
) ON [PRIMARY]
GO
如何在不更改表字段类型的情况下使 TSQL 工作?
[Year] 字段包含格式为 YYYY-MM-DD 的记录。
这是在 SQL Server 2016 上。
【问题讨论】:
-
您的列 [Year] 是日期,而不是 int。 WHERE datepart(YEAR,[Year]) = DATEPART(YEAR, GETDATE())
-
成功了,谢谢。
-
旁白:
[Year]列是Date,没有格式。'YYYY-MM-DD'是将Date转换为字符串以进行显示时可能应用的多种格式之一。
标签: sql sql-server tsql sql-server-2016