
正文
sqlserver年减1,sql server当前日期减一天
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
sql查询中日期加减的问题
他们说的那个dateadd 不是oracle的函数。是sqlserver 的,你要前一天的
可以
SELECT SYSDATE-1 FROM DUAL 直接减一就是默认减一天。就算是1号 也会变成上个月的最后一天
相关问答
Q1: 在cognos中利用substring对时间进行截取可以直接减1么
从sqlserver数据库中提取日期应该使用,并把年月日分别截取出来应该使用
数据库提供的时间函数。
1:使用year,month,day用来提取年月日
如:select year(getdate()),month(getdate()),day(getdate())
2:使用DATEPART 获取年月日
如:select DATEPART('year',getdate()),DATEPART('month',getdate()),DATEPART('day',getdate())
----------------------------------------------------------------------------
如果字段是varchar类型的话,可以先将字段转换为日期类型。
使用类型转换函数convert或者cast
如:cast('2015-07-14' as datetime)
Q2: SQL 同期对比月的问题 还有就是如何多个字段确定一条数据,请教!
SQL 同期对比月?
这个 同期的期, 是 年? 半年? 还是季度?
如果是年的话。就是 用 需要比较的日期 减去一年的 操作来处理。
如果是 半年的话, 用 需要比较的日期 减去6个月的 操作来处理。
如果是 季度的话, 用 需要比较的日期 减去3个月的 操作来处理。
至于 日期如何减 , 例如减少 6 个月。
Oracle 使用 ADD_MONTHS( 日期, -6 )
SQL Server 使用 DATEADD( mm, 日期, -6 )
MySQL 使用 DATE_SUB( 日期, INTERVAL 6 MONTH)
至于 如何多个字段确定一条数据。
这个不大清楚你的表是如何设计的。
一般情况下,是一个主键确定一条数据。
CREATE TABLE test_liupeng841121(
name VARCHAR(10),
year INT,
month INT,
sl INT
);
go
INSERT INTO test_liupeng841121
SELECT '福田', 2010, 11, 72 UNION ALL
SELECT '东本', 2010, 11, 85 UNION ALL
SELECT '古田', 2010, 11, 123 UNION ALL
SELECT '福田', 2010, 12, 96 UNION ALL
SELECT '东本', 2010, 12, 34 UNION ALL
SELECT '福田', 2011, 1, 78
go
SELECT
T_Now.name AS 名称,
T_Now.year AS 年,
T_Now.month AS 月,
T_Now.sl AS 当月数据,
T_Prev.sl AS 上月数据
FROM
test_liupeng841121 T_Now LEFT JOIN
test_liupeng841121 T_Prev
ON (
T_Now.name = T_Prev.name
AND (
(T_Now.year = T_Prev.year AND T_Now.month = T_Prev.month + 1)
OR
(T_Now.year = T_Prev.year + 1 AND T_Now.month = 1 AND T_Prev.month = 12)
)
)
ORDER BY
T_Now.name, T_Now.year, T_Now.month








