sql 语句 要求查询结果的日期减少一个月 eg. 201201 查询后要显示为201112
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql 语句 要求查询结果的日期减少一个月 eg. 201201 查询后要显示为201112相关的知识,希望对你有一定的参考价值。
请高手指教 谢谢
参考技术A 如果你用的是sql server,可以这样写 dateadd(month,-1,getdate())其它的数据库也应该有相应的系统函数。 参考技术B select case when month(doingtime)=01 then cast(year(doingtime)-1 as varchar)+'-12' else cast(year(doingtime) as varchar)+'-'+cast(month(doingtime)-1 as varchar) end a from exloginrecord
我的方法比较麻烦。日期格式:2010-10 参考技术C 假设字段名是YM
如果YM是int类型:
select case when YM % 100 = 1 then YM - 89 else YM - 1 end as prevMonth from tablename
如果YM是varchar类型:
select left(convert(varchar(8),dateadd(month,-1,cast(YM + '01' as datetime)),112),6) as prevMonth from tablename 参考技术D 把查询结果转换为日期格式 就可以实现日期的加减了 就像数字的加减就行了 第5个回答 2011-09-17
sql 计算一个月几天
参考技术A 可以将年月组成一个月的第一天,再与下个月第一天比较差异天数declare
@ym
varchar(6)
--年月
select
datediff(day,
cast(@ym+
'01'
as
datetime),dateadd(month,1,cast(@ym+
'01'
as
datetime))
) 参考技术B 按实际年份的日历计算。比如1月是31天,2月是28天,如果是闰年,则是29天。 参考技术C 使用
datediff
来获取两个时间差:
如语句:
select
datediff(day,"2015-2-1","2015-3-1")
返回2105年2月份共
28
天
DATEDIFF
函数
[日期和时间]
功能
返回两个日期之间的间隔。
语法
DATEDIFF
(
date-part,
date-expression-1,
date-expression-2
)
date-part
:
year
|
quarter
|
month
|
week
|
day
|
hour
|
minute
|
second
|
millisecond
参数
date-part
指定要测量其间隔的日期部分。
有关日期部分的详细信息,请参见日期部分。
date-expression-1
某一间隔的起始日期。从
date-expression-2
中减去该值,返回两个参数之间
date-parts
的天数。
date-expression-2
某一间隔的结束日期。从该值中减去
Date-expression-1,返回两个参数之间
date-parts
的天数。
用法
此函数计算两个指定日期之间日期部分的数目。结果为日期部分中等于(date2
-
date1)的有符号的整数值。
当结果不是日期部分的偶数倍时,DATEDIFF
将被截断而不是被舍入。
当使用
day
作为日期部分时,DATEDIFF
返回两个指定的时间之间(包括第二个日期但不包括第一个日期)的午夜数。
当使用
month
作为日期部分时,DATEDIFF
返回两个日期之间(包括第二个日期但不包括第一个日期)出现的月的第一天的数目。
当使用
week
作为日期部分时,DATEDIFF
返回两个日期(包括第二个日期但不包括第一个日期)之间星期日的数目。
对于更小的时间单位存在溢出值:
milliseconds
24
天
seconds
68
年
minutes
4083
年
others
没有溢出限制
如果超出这些限制,此函数将返回溢出错误。
标准和兼容性
SQL/92
Transact-SQL
扩展。
SQL/99
Transact-SQL
扩展。
Sybase
与
Adaptive
Server
Enterprise
兼容。
下面示例的语句返回
1:
SELECT
datediff(
hour,
'4:00AM',
'5:50AM'
)
下面的语句返回
102:
SELECT
datediff(
month,
'1987/05/02',
'1995/11/15'
)
下面的语句返回
0:
SELECT
datediff(
day,
'00:00',
'23:59'
)
下面的语句返回
4:
SELECT
datediff(
day,'1999/07/19
00:00','1999/07/23
23:59'
)
下面的语句返回
0:
SELECT
datediff(
month,
'1999/07/19',
'1999/07/23'
)
下面的语句返回
1:
SELECT
datediff(
month,
'1999/07/19',
'1999/08/23'
)
以上是关于sql 语句 要求查询结果的日期减少一个月 eg. 201201 查询后要显示为201112的主要内容,如果未能解决你的问题,请参考以下文章