我有一张桌子,可以让我查询一个日期,然后检索它属于哪个财政期间,一周等。
该表的格式如下:
日期(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日期,在我的日历表中查找,并返回适当的财务期。
答案 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