SQL Server DATEDIFF获取上个月

ecr0jaav  于 2022-11-21  发布在  其他
关注(0)|答案(7)|浏览(186)

我要取得相对于目前日期的上个月
SELECT日期差异(mm,-1,2 -2-2011)
这个查询给出了67,这是一个错误的值。我哪里出错了?

x6492ojm

x6492ojm1#

您可以使用DATEADD
例如

SELECT DATEADD(month, -1, GETDATE())
ivqmmu1c

ivqmmu1c2#

2-2-2011不是有效的日期文字-您用2减去2,然后从结果中减去2011-正确的日期文字是'2-2-2011'#2-2-2011#。您可以使用GETDATE()获取当前日期,而不依赖文字。
你也不应该使用DATEDIFF-它给你日期之间的 * 差异 *。
您应该使用DATEADD来计算新日期。
试试看:

SELECT DATEADD(mm,-1, GETDATE())

这将得到一个月前的日期。
如果只需要 month,还需要使用DATEPART

SELECT DATEPART(mm, SELECT DATEADD(mm,-1, GETDATE()))
vptzau2j

vptzau2j3#

SELECT datepart(mm, dateadd(mm,-1,'2011/1/1') )
55ooxyrt

55ooxyrt4#

如果您想要当前月份之前的月份,则需要
SELECT MONTH(DATEADD(mm, -1, GETDATE()))
如果您想要当前日期之前一个月的日期,则需要
SELECT DATEADD(mm, -1, GETDATE())
顺便说一句,SELECT datediff(mm,-1,2-2-2011)计算第-1天到第-2011天之间的月数,即67(2010 / 30)。

bbmckpt7

bbmckpt75#

您需要使用DATEADD-而不是DATEDIFF
DATEDIFF计算两个日期之间的差值-它不会将日期或月份添加到现有日期....
此外,您还需要将日期用单引号括起来:使用'2-2-2011'而不是简单地使用2-2-2011
最后:我强烈建议使用ISO-8601日期格式YYYYMMDD(此处:20110202)-无论您的SQL Server上的语言和区域设置如何,它都将工作-由于语言设置,您的日期格式在许多服务器上都会中断。

mf98qq94

mf98qq946#

DATEDIFF计算开始日期和结束日期之间的差当前日期之前的每个日期都有一个正数,当前日期之后的每个日期都有一个负数,这在获取您的特定日期时起作用,无论是日,月,年还是小时以下是datediff的语法

DATEDIFF (your datetime type, your starting date,your ending date)

函数执行(your ending date)-(your starting date)
在您的情况下,下面的datediff将完美地工作

SELECT DATEDIFF (month,[you_date_or_datetime_column],GETDATE()) = 1
f3temu5u

f3temu5u7#

你可以用DATEADD试试这段代码

上个月

SELECT DATEADD(month, -1, GETDATE())

前7天

$date = date('Y-m-d',strtotime("-7 days"));
SELECT * FROM users WHERE `date` LIKE '%$date%'

$date变量获取上一个日期日期

相关问题