3 回答

TA貢獻(xiàn)1895條經(jīng)驗(yàn) 獲得超7個贊
對日期常量使用正確的語法:
ViewListInvoices.[Invoice Date] > '20191231'

TA貢獻(xiàn)1785條經(jīng)驗(yàn) 獲得超8個贊
使用該DATEFROMPARTS
函數(shù)創(chuàng)建日期文字
我喜歡使用DATEFROMPARTS函數(shù)在 TSQL 中創(chuàng)建日期文字。這確實(shí)需要 SQL Server 2012 或更高版本(這對大多數(shù)人來說應(yīng)該不是問題)。
雖然輸入此函數(shù)可能需要一兩秒的時間,但一旦輸入,我發(fā)現(xiàn)代碼更具可讀性,而且我不必?fù)?dān)心語言和日期格式設(shè)置。
您的作業(yè)應(yīng)如下所示(我刪除了很多括號):
sql_string?=?('''SELECT?ViewListInvoices.Department,? ????????????ViewListInvoices.[Invoice?Date] ????????????FROM?ViewListInvoices ????????????WHERE?ViewListInvoices.[Invoice?Date]?>?DATEFROMPARTS(2019,12,31)? ????????????''')
有些人喜歡依賴字符串的隱式轉(zhuǎn)換,就像 Gordon 演示的那樣(在 TSQL 中很常見)。
我也看到有些人使用CAST函數(shù)(尤其是 2012 年之前的 SQL Sever)。
sql_string?=?('''SELECT?ViewListInvoices.Department,? ????????????ViewListInvoices.[Invoice?Date] ????????????FROM?ViewListInvoices ????????????WHERE?ViewListInvoices.[Invoice?Date]?>??CAST(''20191231''?AS?DATE)''')

TA貢獻(xiàn)1111條經(jīng)驗(yàn) 獲得超0個贊
假設(shè)您想要從上次發(fā)票日期算起的最后 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 的日期使用一個字符串,它將自動轉(zhuǎn)換為強(qiáng)制轉(zhuǎn)換('12/31/2019' as date)
SELECT ViewListInvoices.Department,
ViewListInvoices.[Invoice Date]
FROM ViewListInvoices
where ViewListInvoices.[Invoice Date]>= '12/31/2019'
添加回答
舉報