3 回答
TA贡献1785条经验 获得超8个赞
使用该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)''')
TA贡献1111条经验 获得超0个赞
假设您想要从上次发票日期算起的最后 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'
添加回答
举报