sql按条件修改日期

sql按条件修改日期,第1张

--建表
Create TAble T
(
料号 Varchar(10),
单价 numeric(18,3),
开始日期 date,
结束日期 date
)
--插入数据
insert into T values('A',1,'2015-1-1','2016-1-1')
insert into T values('A',1,'2015-2-1','2016-2-1')
insert into T values('A',2,'2015-3-1','2016-3-1')
insert into T values('B',15,'2015-2-15','2016-2-15')
insert into T values('B',16,'2015-5-15','2016-8-15')
--更新,按料去找到大于当前开始日期的最小开始日期
--也就是找到相同料号的下一个开始做为当前的结束日期
Update T Set 结束日期=
isnull((Select min(开始日期) From T A 
Where T料号=A料号 And A开始日期>T开始日期 ),结束日期)
--方法二,按料号分组开始日期排序产生一个记录号,然后取下一个记录号
--的开始日期更新给当前记录的结束日期
;With CT
As
(
select ,ROW_NUMBER() over(partition by 料号 order by 开始日期) As id
from T 
)
Update CT Set 结束日期=A开始日期
From CT A
Where CT料号=A料号 And CTid=Aid-1
--查看
select  from T

你的数据库服务器-》企业管理器-》管理-》SQL Server 代理-》作业-》新建作业,按照要求填就可以了,在“步骤”的“命令”中填写你要执行的存储过程或语句,在“调度”里面填写什么时间执行
定期执行
DECLARE @dtCurDate datetime
DECLARE @myPath varchar(128)
SELECT @dtCurDate = GETDATE()
SET @myPath = 'E:\数据库 ' + @vchCurDate + 'bak'
backup database 数据库 to disk = @myPath WITH INIT
记住要将SQL AGENT服务设置为自动启动,不然你的作业不会被自动执行

1、SQL在查询当天记录时要注意是从当天的0点0分0秒0毫秒开始,到次日0点0分0秒0毫秒截止,但不包含次日的0点0分0秒0毫秒。

2、注意:在不同数据库产品中,获得当天日期的函数不一样。

MSSQL获得当前日期:convert(varchar(10),Getdate(),120)

MYSQL获得当前日期:date(now())

Oracle获得当前日期:to_char(sysdate,'yyyy-mm-dd')

Access获得当前日期:date()

3、在各个数据库里获得当天的记录写法为(假设表名为:Table_1,日期列名为:date_col):

  MSSQL获得当天记录:

select  from table_1 where date_col>=convert(varchar(10),Getdate(),120) and date_col<convert(varchar(10),dateadd(d,1,Getdate()),120)

  MYSQL获得当天记录:

select  from table_1 where date_col>=date(now()) and date_col<DATE_ADD(date(now()),INTERVAL 1 DAY)

Oracle获得当天记录:

select  from table_1 where date_col>=to_char(sysdate,'yyyy-mm-dd') and date_col<to_char(sysdate+1,'yyyy-mm-dd')

  Access获得当天记录:

select  from table_1 where date_col>=date() and date_col<DateAdd("d",1,date())

4、另外,在查询的时候,尽量不要对列进行运算,因为日期列上若有索引,就无法使用索引了。

SQL从时间字段值中获取年份使用DATENAME()函数。

DATENAME()函数语法:DATENAME(param,date)

date是时间字段名 或一个时间值

param是指定要返回日期部分的参数,包括下面几种:

获取年份就可以这样写 datename(year,date) 或 datename(yy,date)

已系统当前时间getdate()为例,3种写法获取年份结果如图:

另外,DATENAME返回的是一个字符串,如果需要返回整数,可以使用DATEPART ( datepart , date ) ,语法与DATENAME相同

1)如上图,在表设计器中,填入设置DateTime类型字段的“默认值或绑定"。上图设置的是一个固定时间:
2016年4月15日
00:00:00
2)在相同的地方,填入
getdate()
,可以将默认值设置为当前日期和时间

本地 与 服务器 很不同~~
为什么要相同呢?也许某个是错误的吧?
你可以告诉服务器提供商或者是远程连接修改服务器系统时间~~这个跟sql是没有关系的。
--------------
补充:
首先明确你在你电脑右下角看到的时间是不是 现在即2008年11月3日 12:51
然后,你启动sql 运行这个代码:select getdate()
看看对不?
也许你所说的是某个网站的时间不对呢~


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/12960732.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-29
下一篇 2023-05-29

发表评论

登录后才能评论

评论列表(0条)

保存