我要取得相对于目前日期的上个月SELECT日期差异(mm,-1,2 -2-2011)这个查询给出了67,这是一个错误的值。我哪里出错了?
x6492ojm1#
您可以使用DATEADD例如
SELECT DATEADD(month, -1, GETDATE())
ivqmmu1c2#
此2-2-2011不是有效的日期文字-您用2减去2,然后从结果中减去2011-正确的日期文字是'2-2-2011'和#2-2-2011#。您可以使用GETDATE()获取当前日期,而不依赖文字。你也不应该使用DATEDIFF-它给你日期之间的 * 差异 *。您应该使用DATEADD来计算新日期。试试看:
2-2-2011
'2-2-2011'
#2-2-2011#
GETDATE()
DATEDIFF
DATEADD
SELECT DATEADD(mm,-1, GETDATE())
这将得到一个月前的日期。如果只需要 month,还需要使用DATEPART:
DATEPART
SELECT DATEPART(mm, SELECT DATEADD(mm,-1, GETDATE()))
vptzau2j3#
SELECT datepart(mm, dateadd(mm,-1,'2011/1/1') )
55ooxyrt4#
如果您想要当前月份之前的月份,则需要SELECT MONTH(DATEADD(mm, -1, GETDATE()))如果您想要当前日期之前一个月的日期,则需要SELECT DATEADD(mm, -1, GETDATE())顺便说一句,SELECT datediff(mm,-1,2-2-2011)计算第-1天到第-2011天之间的月数,即67(2010 / 30)。
SELECT MONTH(DATEADD(mm, -1, GETDATE()))
SELECT DATEADD(mm, -1, GETDATE())
SELECT datediff(mm,-1,2-2-2011)
bbmckpt75#
您需要使用DATEADD-而不是DATEDIFFDATEDIFF计算两个日期之间的差值-它不会将日期或月份添加到现有日期....此外,您还需要将日期用单引号括起来:使用'2-2-2011'而不是简单地使用2-2-2011。最后:我强烈建议使用ISO-8601日期格式YYYYMMDD(此处:20110202)-无论您的SQL Server上的语言和区域设置如何,它都将工作-由于语言设置,您的日期格式在许多服务器上都会中断。
20110202
mf98qq946#
DATEDIFF计算开始日期和结束日期之间的差当前日期之前的每个日期都有一个正数,当前日期之后的每个日期都有一个负数,这在获取您的特定日期时起作用,无论是日,月,年还是小时以下是datediff的语法
DATEDIFF (your datetime type, your starting date,your ending date)
函数执行(your ending date)-(your starting date)在您的情况下,下面的datediff将完美地工作
(your ending date)-(your starting date)
SELECT DATEDIFF (month,[you_date_or_datetime_column],GETDATE()) = 1
f3temu5u7#
你可以用DATEADD试试这段代码
上个月
前7天
$date = date('Y-m-d',strtotime("-7 days")); SELECT * FROM users WHERE `date` LIKE '%$date%'
$date变量获取上一个日期日期
7条答案
按热度按时间x6492ojm1#
您可以使用DATEADD
例如
ivqmmu1c2#
此
2-2-2011
不是有效的日期文字-您用2减去2,然后从结果中减去2011-正确的日期文字是'2-2-2011'
和#2-2-2011#
。您可以使用GETDATE()
获取当前日期,而不依赖文字。你也不应该使用
DATEDIFF
-它给你日期之间的 * 差异 *。您应该使用
DATEADD
来计算新日期。试试看:
这将得到一个月前的日期。
如果只需要 month,还需要使用
DATEPART
:vptzau2j3#
55ooxyrt4#
如果您想要当前月份之前的月份,则需要
SELECT MONTH(DATEADD(mm, -1, GETDATE()))
如果您想要当前日期之前一个月的日期,则需要
SELECT DATEADD(mm, -1, GETDATE())
顺便说一句,
SELECT datediff(mm,-1,2-2-2011)
计算第-1天到第-2011天之间的月数,即67(2010 / 30)。bbmckpt75#
您需要使用DATEADD-而不是
DATEDIFF
DATEDIFF
计算两个日期之间的差值-它不会将日期或月份添加到现有日期....此外,您还需要将日期用单引号括起来:使用
'2-2-2011'
而不是简单地使用2-2-2011
。最后:我强烈建议使用ISO-8601日期格式YYYYMMDD(此处:
20110202
)-无论您的SQL Server上的语言和区域设置如何,它都将工作-由于语言设置,您的日期格式在许多服务器上都会中断。mf98qq946#
DATEDIFF计算开始日期和结束日期之间的差当前日期之前的每个日期都有一个正数,当前日期之后的每个日期都有一个负数,这在获取您的特定日期时起作用,无论是日,月,年还是小时以下是datediff的语法
函数执行
(your ending date)-(your starting date)
在您的情况下,下面的datediff将完美地工作
f3temu5u7#
你可以用DATEADD试试这段代码
上个月
前7天
$date变量获取上一个日期日期