【发布时间】:2019-03-12 16:06:16
【问题描述】:
我正在尝试使用标量函数配置计算列。我需要根据日期为列状态设置一个 BIT。
CREATE FUNCTION dbo.setStatus(@StartDate datetime, @EndDate datetime)
RETURNS bit
AS
BEGIN
RETURN (@StartDate < GETDATE() && GETDATE() < @EndDate)
END
GO
我在 ssms 中看到符号“
【问题讨论】:
-
请注意
getdate()返回当前日期和时间。如果您只需要今天的日期,请使用convert或cast它来日期数据类型convert(date, getdate()) -
强制性:标量值函数通常是性能问题的原因......
-
嗯,SQL 语法与编程语言的不同之处之一是不能返回布尔表达式的结果。您可以使用布尔数据类型来测试某事是否为真(例如 where 子句和 case 表达式),但不返回布尔数据类型本身。此外,它的工作方式与您预期的略有不同,因为布尔值可以评估为真、假或未知(当涉及空值时,它不是简单的 1 或 0)。从本质上讲,您不能像预期的那样将 true/false 用于按位运算。
-
SQL Server does not have a boolean data type。 A bit 不是布尔值,而是它最亲近的亲戚(可以说)。
标签: sql-server tsql sql-function