如何在sql语句中将edit框传来的日期加1???(100分)

  • 主题发起人 主题发起人 fchyed
  • 开始时间 开始时间
F

fchyed

Unregistered / Unconfirmed
GUEST, unregistred user!
我要用web查询,一个oracl数据库,由于特殊需要,
比如 riqi2=requestform(“riqi”)是从上个web传过来的,

数据库里有一列date数据,我想当riqi是2002-11-2日时自动加一既为
2002-11-3

里面有国sql语句 riqi1>riqi2,我的目的是达到 riqi>riqi+1 的效果

但是riqi2是个字符串 不能+-,望各位指点!
 
把日期转换成字符串,再把最后表示日期的字符截下来转换成integer加上1,最后再转换回
去就行拉
 
delphi里如何计算日期
var ss : TDateTime

其实Tdatetime是一个双精度的浮点数,它的小数点前表示天数:

如, ss := ss + 20 表示从ss开始向后20天,如果 ss = 234.567
它就表示 234.567天,当然是从公元0年开始计算的!

将字符转成日期型,再为其加1就可以了
 
给你个日期加减函数
//返回指定日期增加(减少)指定天数的日期
//Date: 当前日期
// NumberOfDays:制定的天数,负为减少的日期

function IncDay(const Date: TDateTime; NumberOfDays: Integer): TDateTime;
var
ts: TTimeStamp;
begin
ts := DateTimeToTimeStamp(Date);
Inc(ts.Date, NumberOfDays);
Result := TimeStampToDateTime(ts);
end;

 
用decode函数
where riqi>decode(riqi2,'2002-11-2',to_date(riqi2,'YY-MM-DD')+1,to_date(riqi2,'YY-MM-DD'))
 
直接把字符串转变成日期类型然后加上1,再转换回来就行了。
 
用MSSQL中的DateAdd函数
例如

Declare @NewDate Datetime
Declare @OldDate Datetime

Set @OldDate='2002-12-01'
Set @NewDate=DateAdd(day,1,@OldDate)
print @NewDate
这时的@NewDate='2002-12-02'
 
用decode函数
where riqi>decode(:riqi2,'2002-11-2',to_date(:riqi2,'YY-MM-DD')+1,to_date(:riqi2,'YY-MM-DD'))

在这里,riqi是数据库中的那个date字段,riqi2是你获得的那个代表日期的字符串变量,
格式为'××-××-××',你把riqi2赋值进去就行了
 
错了一点点,更正为:
用decode函数
where riqi>decode(:riqi2,'2002-11-2',to_date(:riqi2,'YY-MM-DD')+1,to_date(:riqi2,'YY-MM-DD'))

在这里,riqi是数据库中的那个date字段,riqi2是你获得的那个代表日期的字符串变量,
格式为'××××-××-××',你把riqi2赋值进去就行了
 
在Delphi中将日期加1即可 StrToDate(edit1.Text) + 1
 
推荐你用delphi自带的日期加减函数
function IncDay(const AValue: TDateTime; const ANumberOfDays: Integer = 1): TDateTime;
你可以把第一个参数写为edit框传来的日期
第二个参数写为1,表示给第一个参数的日期加1
当然,你要把edit框的text转化为日期型 strtodate(edit.text)[:D]
 
我的办法最简单适用,怎么还不给分?
 
严重同意墨剑
 
VBScript:
DateAdd('d',1, riqi2)
在ASP中可用。
 
常用的日期转换函数
var
DateTime,MyDate,MyTime : TDateTime;
DateStr,TimeStr:string;
begin
DateTime := Now; //返回当前日期时间
DateStr:= DateToStr(DateTime); //转换日期为字符串 ,例如:01/08/96
TimeStr := TimeToStr(DateTime); //转换时间为字符串,例如:20:50
MyDate:= StrToDate(DateStr); //转换字符串为日期
MyTime:= StrToTime(TimeStr); //转换字符串为时间
DateTime:= MyDate + MyTime; //相加得到datetime
DateTime := DateTime + (15/60/24);//加15分钟

DateStr:= FormatDateTime('yyyy-mmmm-dd',MyDate); {1996-January-08}
DateStr:= FormatDateTime('mmm,d,yy,ddd',MyDate); {Jan,8,96,Mon}
DateStr:= FormatDateTime('dddd/dd/mm/yy',MyDate); {Monday/08/01/96}

TimeStr:= FormatDateTime('t',MyTime); {10:50 PM}
TimeStr:= FormatDateTime('tt',MyTime); {10:50:00 PM}
TimeStr:= FormatDateTime('hh-nn-ss-a/p',MyTime); {10-50-00-p}
end;

足够了:-)
 
多人接受答案了。
 
后退
顶部