使用 GETDATE() 从 table 中提取

Using GETDATE() to pull from a table

对于这个基本的(可能是愚蠢的)问题,我提前表示歉意。

我正在做一个 SELECT 查询,我要加入几个 table。我有一个 table,其中包含与特定日期关联的数值。我想在我的输出中得到的是附加到今天的数值,但我不知道如何实现这一点。显然,我的输出中的每条记录都具有相同的值,我对此没有意见。

这可能吗?如果是这样,代码示例是什么?

我希望从中得到数值的 table 只是在一列 ([Calendar_Day]) 中包含日期,在另一列 ([X_Value]) 中包含整数。 下面,您可以看到我的 SELECT 语句的最后三行。最近的尝试产生了 NULL。

,[EnterpriseDB].[pcc].[conditions].Internal
,GETDATE() AS Date_Today 
,(SELECT [X_Value] FROM [Analytics].[WorkArea].[Days_Vals] WHERE [Calendar_Day] = GETDATE()) AS BizVal_Today

只是猜测:

[Calendar_Day] 属于 date 类型。而getdate()returns一个datetime。这意味着 DBMS 将 [Calendar_Day] 向上转换为 datetime,时间为 00:00:00.0,以便能够比较操作数。但是 getdate() 包括当前时间。因此,除非您恰好在 00:00:00.0 处执行查询,否则值将不匹配并且子查询 returns null.

要解决这个问题,请向下转换 getdate()

... WHERE [Calendar_Day] = convert(date, getdate()) ...

如果 [Calendar_Day] 也是 datetime 但您不想比较它的小时(、分钟、秒...)部分,也将其向下转换。

... WHERE convert(date, [Calendar_Day]) = convert(date, getdate()) ...

可能会将任何索引从 window 中删除,如果 [Calendar_Day] 中有索引的话。您可能需要考虑将数据类型更改为 date 或使用持久的索引计算列并与之进行比较,如果这会导致任何性能问题。