收费中滞纳金的实现,可以按天收也可以按月收,假设按天收,超期一天,收取总金额的千分之一作为滞纳金,如按月设置,超期一月,收取总金额的百分之二作为滞纳金,数据库为access,请问,超过的天数或月数应该怎么得到呢,时间格式的字段可以直接相减得到吗?如可以的话,天数相减比较容易得到,月数应如何得到呢?查找需收取滞纳金的记录时,select语句中,where 后设置条件为应交费日期<当前日期,这样能实现吗?俺是初学,请帮帮忙!
解决方案 »
- adoconnection 能不能在执行完 SQL 语句后把它关闭?
- 用DELPHI写三层数据库的问题
- 今天是阿三的生日,庆祝一下!
- checkcombobox
- 我想将某个exe文件保存到sqlserver数据库中,然后将该文件释放到sqlserver服务器的c盘根目录,代码该如何写?
- SQL server VARCHAR(8000)数据读取的问题
- 这样的报表怎样生成?冥思苦想ing.....
- 谁见过这中风格的??
- 代码调试!关于FOR。。LISTVIEW。。??
- 请各位高手赐教!不甚感激!!!(delphi中winexec后跟路径名该怎么用?)
- 哪里能找到漂亮的Dephi上用OpenGl编写的东东
- 数据库中的小问题,请大家都来看看?谢谢!(我很急!!!,请帮帮忙!!!!!)
月份也可以得到,如果你用的是SQL Server的话,函数DateDiff专门处理这方面的东西的
如果不是的,可以考虑以下算法:
提取年月日,然后再运算
将两个日期格式格式化为到月为止,然后比较得到的两个字符串,如果不等,则通过系统的比较月的函数来得到月,当然也可以通过系统的月累加的函数来,肯定可以得到月的。
如果相等,那么就直接相减以后用floor函数取整数部分
//nowtime:Tdatetime;
//cirlevalue:INTEGR;为月数
var
lyear,lmonth:integer;
lastyear,lastmonth,lastday:integer;
days:integer;
begin
lyear:=cirlevalue div 12;
lmonth:=cirlevalue mod 12;
if (monthof(nowtime)-lmonth)>0 then
lastyear:=yearof(nowtime)-lyear
else
lastyear:=yearof(nowtime)-lyear-1;
lastmonth:=(monthof(nowtime)-lmonth+12)mod 12;
days:=daysofmonth(lastyear,lastmonth);
if dayof(nowtime)>days then lastday:=days
else
lastday:=dayof(nowtime);
result:=strtodatetime(inttostr(lastyear)+'-'+inttostr(lastmonth)+'-'+inttostr(lastday));
end;