需要帮助。我只想过3个月的交易。
SELECT *
FROM transaction
WHERE TransactionDate >= GETDATE()-90
transactionDate是一种INT类型,格式为YYYYMMDD(例如20160812)
我收到了这个错误
将表达式转换为数据类型datetime的算术溢出错误。
任何帮助都可以
答案 0 :(得分:4)
您无法将int直接转换为日期。但是,您可以转换YYYYMMDD格式的字符串。所以,试试这个:
WHERE cast(cast(TransactionDate as varchar(255)) as date) >= GETDATE() - 90
或者,您可以在当前日期进行所有转换:
WHERE TransactionDate >= CONVERT(INT, CONVERT(VARCHAR(255), GETDATE() - 90, 112))
此方法的优点是引擎可以使用TransactionDate
上的索引。
也就是说,存储列的正确方法是DATE
。 SQL Server有内置的日期/时间数据类型,原因很简单;对他们有很多直接的支持。使用数据库的功能。