加入今天的约会

时间:2017-09-07 14:38:37

标签: sql-server sql-server-2012

我有一张桌子,可以让我查询一个日期,然后检索它属于哪个财政期间,一周等。

该表的格式如下:

  

日期(DATETIME)

     

FinancialPd

     

FinancialWk

     

FinancialYr

我希望能够做的是今天的日期,并找出它属于报告自动化的财务期。

到目前为止,我已经尝试过:

SELECT 
SUM(Revenue) as revenue,
periods.Date,
periods.financialPd

FROM

[tbl].[dbo].[view] ordTbl

INNER JOIN [tbl].[dbo].[caltbl] as periods
ON GETDATE() = periods.Date

我的预期结果如下:

今天:2017-01-15 00:00:00

财务期:1

收入:1582.08

编辑**

TDLR;我需要接受TODAYS日期,在我的日历表中查找,并返回适当的财务期。

1 个答案:

答案 0 :(得分:3)

根据Panagiotis Kanavos条评论,您应该使用WHERE条款。

似乎您希望将日期(datetime值)转换为date值,请尝试以下操作:

SELECT periods.Date, periods.financialPd
FROM [tbl].[dbo].[view] ordTbl
INNER JOIN [tbl].[dbo].[caltbl] as periods
ON periods.[YourJoinField] = ordTbl.[YourJoinField]
WHERE CAST(GETDATE() AS DATE = CAST(periods.Date AS DATE)

您可能不需要第二次演员,具体取决于periods.Date的数据类型。

不确定这是否是查询的简化版本,但您不能从ordTbl中选择任何内容,因此根本不需要加入。

如果您不需要订单表,那么您只需要这样的内容:

SELECT periods.Date, periods.financialPd
FROM [tbl].[dbo].[caltbl] as periods
WHERE CAST(GETDATE() AS DATE = CAST(periods.Date AS DATE)

CAST的原因是GETDATE()将返回datetime值,因此:

SELECT GETDATE()

返回:2017-09-07 15:49:54.233永远不会等于:2017-09-07,因为它默认为:2017-09-07 00:00:00.000