【发布时间】:2018-10-10 08:59:21
【问题描述】:
我希望从数据库中提取三年的数据,但现在我必须使用 between 语句在代码的多个部分中指定日期:
BETWEEN '2015-10-01' AND '2018-09-30'
由于数据库只包含上个月倒退的有效数据,我想取上个月的月底,倒退三年。
我找到了this 教程,作者在其中展示了如何在 SQL Server 中执行此操作,我尝试对其进行调整,但我的 RDBMS 在 datediff 函数中抛出错误
----Last Day of Previous Month
SELECT DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE()),0))
LastDay_PreviousMonth
我的代码如下所示,但我看到的错误是关于将 0 转换为日期。
DECLARE @date DATE
SET @date = getdate()
SELECT dateadd(second,-1,dateadd(mm, DATEDIFF(m,0,GETDATE()),0))
如果有人有任何建议,我将非常感谢您的指导。
【问题讨论】:
-
请提供完整的错误信息
-
旁白:最佳实践是使用
month和DateAdd和DateDiff来指定datepart。最糟糕的做法是在一个表达式中同时使用mm和m。 -
@Used_By_Already [代码:102,SQL 状态:42W04] SQL Anywhere 错误 -131:第 6 行的“datediff”附近的语法错误