他们说的那个dateadd 不是oracle的函数。是sqlserver 的,你要前一天的
嘉陵网站制作公司哪家好,找创新互联!从网页设计、网站建设、微信开发、APP开发、响应式网站等网站项目制作,到程序开发,运营维护。创新互联于2013年开始到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联。
可以
SELECT SYSDATE-1 FROM DUAL 直接减一就是默认减一天。就算是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)
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