选择日期范围,最近 30 天

我试图仅返回最近 30 天的查询,但没有成功。我尝试将其简化为仅拉取任何内容 > 12/31/2019 仍然没有成功。


sql_string = ('''SELECT ViewListInvoices.Department, 

            ViewListInvoices.[Invoice Date]

            FROM ViewListInvoices

            WHERE (((ViewListInvoices.[Invoice Date] > (12/31/2019))

            ))''')


    sql_result = query(sql_string)

    shop_average_inv_last_month = sorted(sql_result)

    sql_result =[]

我已经尝试过> ('12/31/2019')或者('#12/31/2019')还有很多其他的。


在此先感谢您的帮助


胡说叔叔
浏览 107回答 3
3回答

人到中年有点甜

对日期常量使用正确的语法:ViewListInvoices.[Invoice Date] > '20191231'

慕的地10843

使用该DATEFROMPARTS函数创建日期文字我喜欢使用DATEFROMPARTS函数在 TSQL 中创建日期文字。这确实需要 SQL Server 2012 或更高版本(这对大多数人来说应该不是问题)。虽然输入此函数可能需要一两秒的时间,但一旦输入,我发现代码更具可读性,而且我不必担心语言和日期格式设置。您的作业应如下所示(我删除了很多括号):sql_string = ('''SELECT ViewListInvoices.Department,              ViewListInvoices.[Invoice Date]             FROM ViewListInvoices             WHERE ViewListInvoices.[Invoice Date] > DATEFROMPARTS(2019,12,31)              ''')有些人喜欢依赖字符串的隐式转换,就像 Gordon 演示的那样(在 TSQL 中很常见)。我也看到有些人使用CAST函数(尤其是 2012 年之前的 SQL Sever)。sql_string = ('''SELECT ViewListInvoices.Department,              ViewListInvoices.[Invoice Date]             FROM ViewListInvoices             WHERE ViewListInvoices.[Invoice Date] >  CAST(''20191231'' AS DATE)''')

catspeake

假设您想要从上次发票日期算起的最后 30 天,请使用 max 子查询和 dateadd SELECT ViewListInvoices.Department,         ViewListInvoices.[Invoice Date]        FROM ViewListInvoices        where ViewListInvoices.[Invoice Date]>=        DateAdd(d,-30,        (        SELECT max(ViewListInvoices.[Invoice Date]) max_date        FROM ViewListInvoices invoice2        ))或者,如果您希望所有大于 12/31/2019 的日期使用一个字符串,它将自动转换为强制转换('12/31/2019' as date)  SELECT ViewListInvoices.Department,         ViewListInvoices.[Invoice Date]        FROM ViewListInvoices        where ViewListInvoices.[Invoice Date]>= '12/31/2019' 
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python