使用GETDATE()从表中提取

时间:2018-07-16 21:07:02

标签: sql getdate

我预先为基本(可能很愚蠢)的问题道歉。

我正在执行SELECT查询,其中我要联接多个表。我有一个表,其中包含与某些日子相关的数值。我想在输出中提供的是今天附带的数字值,但是对于如何实现此目标我一无所知。显然,我的输出中的每条记录都具有相同的值,我对此表示满意。

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

我希望从中获得数值的表在第一列中有日期([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

1 个答案:

答案 0 :(得分:0)

只是猜测:

[Calendar_Day]的类型为dategetdate()返回datetime。这意味着DBMS将[Calendar_Day]转换为datetime,其时间为00:00:00.0,以便能够比较操作数。但是getdate()包括当前时间。因此,除非您正好在00:00:00.0执行查询,否则值将不匹配,并且子查询返回null。

要解决此问题,请低调getdate()

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

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

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

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