sql相减函数
A. 求sql语句。得出表中两列相减的值
1、语句如下:
select A, B, A-B as C from 表1
2、计算列:
可以使用同一表中的其他列的表达式计算得来。表达式可以是非计算列的列名、常量、函数,也可以是用一个或多个运算符连接的上述元素的任意组合。表达式不能为子查询。
语句中的A-B就是计算列,as C的意思是给这个计算列起个列名叫C。
只要符合上述规则,你可以任意组合字段、运算符等,形成需要的计算列。
(1)sql相减函数扩展阅读:
计算列应用范围
计算列可用于选择列表、WHERE 子句、ORDER BY 子句或任何可使用正则表达式的其他位置,但下列情况除外:
用作 CHECK、FOREIGN KEY 或 NOT NULL 约束的计算列必须标记为 PERSISTED。如果计算列的值由具有确定性的表达式定义,并且索引列中允许使用计算结果的数据类型,则可将该列用作索引中的键列,或者用作 PRIMARY KEY 或 UNIQUE 约束的一部分。
例如,如果表中含有整数列a和b,则可以对计算列a+b创建索引,但不能对计算列a+ DATEPART(dd,GETDATE()) 创建索引,因为在后续调用中,其值可能发生改变。
计算列不能作为 INSERT 或 UPDATE 语句的目标。
数据库引擎基于使用的表达式自动确定计算列的为 Null 性。即使只有非空列,大多数表达式的结果也“认为”可为空值,因为下溢或溢出生成的结果也可能为空。使用带AllowsNull属性的 COLUMNPROPERTY 函数可查明表中任何计算列的为 Null 性。通过指定 ISNULL (check_expression,constant) 可以将可为空值的表达式转换为不可为空值的表达式,其中,constant是可替换所有空结果的非空值.
网络.计算列
B. 如何使用sql语句将两个时间相减,得到包含小数的天数
DateDiff 函数
返回 Variant (Long) 的值,表示两个指定日期间的时间间隔数目。
语法
DateDiff(interval, date1, date2[, firstdayofweek[, firstweekofyear]])
DateDiff 函数语法中有下列命名参数:
部分 描述
interval 必要。字符串表达式,表示用来计算date1 和 date2 的时间差的时间间隔
Date1□date2 必要;Variant (Date)。计算中要用到的两个日期。
Firstdayofweek 可选。指定一个星期的第一天的常数。如果未予指定,则以星期日为第一天。
firstweekofyear 可选。指定一年的第一周的常数。如果未予指定,则以包含 1 月 1 日的星期为第一周。
设置
interval 参数的设定值如下:
设置 描述
yyyy 年
q 季
m 月
y 一年的日数
d 日
w 一周的日数
ww 周
h 时
n 分钟
s 秒
firstdayofweek 参数的设定值如下:
常数 值 描述
vbUseSystem 0 使用 NLS API 设置。
vbSunday 1 星期日(缺省值)
vbMonday 2 星期一
vbTuesday 3 星期二
vbWednesday 4 星期三
vbThursday 5 星期四
vbFriday 6 星期五
vbSaturday 7 星期六
常数 值 描述
vbUseSystem 0 用 NLS API 设置。
vbFirstJan1 1 从包含 1 月 1 日的星期开始(缺省值)。
vbFirstFourDays 2 从第一个其大半个星期在新的一年的一周开始。
vbFirstFullWeek 3 从第一个无跨年度的星期开始。
C. sql如何用函数调用数据库里的时间和当前时间相减,求大神代码
SQL Server DATEDIFF() 函数
SQL Server Date 函数
定义和用法
DATEDIFF() 函数返回两个日期之间的天数。
语法
DATEDIFF(datepart,startdate,enddate)
startdate 和 enddate 参数是合法的日期表达式。
datepart 参数可以是下列的值:
datepart
缩写
年 yy, yyyy
季度 qq, q
月 mm, m
年中的日 dy, y
日 dd, d
周 wk, ww
星期 dw, w
小时 hh
分钟 mi, n
秒 ss, s
毫秒 ms
微妙 mcs
纳秒 ns
实例
例子 1
使用如下 SELECT 语句:
SELECT DATEDIFF(day,'2008-12-29','2008-12-30') AS DiffDate
结果:
DiffDate
1
例子 2
使用如下 SELECT 语句:
SELECT DATEDIFF(day,'2008-12-30','2008-12-29') AS DiffDate
结果:
DiffDate
-1
D. sql语句怎么来对日期进行相加减
在sql server里可以使用:
where start_date <=
DateAdd(d,1,to_date('2005-12-09','yyyy-mm-dd'))
and completion_date >=
to_date('2005-12-09', 'yyyy-mm-dd') ;
oracle中没有定义和sql server中一样的DateAdd函数,
oracle可以通过interval 'n' year/month/day/hour/minute/second/second(p,s)
的方式来增减时间
下面是自己在oracle中写的DateAdd函数
函数调用基本同sql server一样, 不过datepart部分需要以字符串的方式输入, 即
DateAdd(d,1,to_date('2005-12-09','yyyy-mm-dd'))
要改为
DateAdd('d',1,to_date('2005-12-09','yyyy-mm-dd'))
函数定义如下函数中的注释是datepart的新说明, 与sql server中的略有不同)
create or replace function DATEADD( datepart varchar2, num number, indate date ) return date is
Result date;
v_sql varchar2(1000);
v_datepart varchar2(30);
v_ms varchar2(13);
begin
v_datepart := lower(datepart);
/*
Datepart Abbreviations
year yy, y
quarter qq, q
month mm, m
day dd, d
week wk, w
hour hh, h
minute mi, n
second ss, s
millisecond ms
*/
case
when v_datepart in ('year','yy','y') then
v_sql := 'select :1 + interval '''||num||''' year from al';
when v_datepart in ('quarter','qq','q') then
v_sql := 'select :1 + (interval ''3'' month) * '||num||' from al';
when v_datepart in ('month','mm','m') then
v_sql := 'select :1 + interval '''||num||''' month from al';
when v_datepart in ('week','wk','w') then
v_sql := 'select :1 + (interval ''7'' day) * '||num||' from al';
when v_datepart in ('day','dd','d') then
v_sql := 'select :1 + interval '''||num||''' day from al';
when v_datepart in ('hour','hh') then
v_sql := 'select :1 + interval '''||num||''' hour from al';
when v_datepart in ('minute','mi','n') then
v_sql := 'select :1 + interval '''||num||''' minute from al';
when v_datepart in ('second','ss','s') then
v_sql := 'select :1 + interval '''||num||''' second from al';
when v_datepart in ('millisecond','ms') then
v_ms := to_char(num/1000,'fm999999990.000');
v_sql := 'select :1 + interval '''||v_ms||''' second(9,3) from al';
else
RAISE_APPLICATION_ERROR(-20001, ''''||datepart||''' is not a recognized dateadd option.' );
end case;
execute immediate v_sql into Result using indate;
return(Result);
EXCEPTION
WHEN OTHERS THEN
RAISE ;
end DATEADD;
E. sql server语句怎么实现两个字符型相减
相减只有数字类型或日期类型可以操作,如果两个字符型字段存储的是数字或者日期格式的内容,可对两个字段进行转换,然后再作相减操作;
如:两个字符型(数字)的字段
ID1 ID2
1 2
2 4
执行语句:
selectcast(ID2asint)-cast(ID1asint)fromtablename;
如:两个字符型(日期)的字段
DATE1 DATE2
2015-08-01 2015-09-01
2015-07-01 2015-10-01
执行语句:
selectcast(DATE2asdatetime)-cast(DATE1asdatetime)fromtablename;
F. sql两个时间相减
使用函数:DATEDIFF ( datepart , startdate , enddate )
select username,DATEDIFF (dd,date1,date2) from testtable where DATEDIFF (dd,date1,date2)>1;
G. sql结果集相减
SELECT * FROM ET_CHARGE_PILE_DATA_INFO where data_status='normal'
MINUS
SELECT * FROM ET_CHARGE_PILE_DATA_INFO where charge_pile_info_id in (
select id from ET_CHARGE_PILE_INFO where CHARGE_STATION_INFO_id in(
select id from ET_CHARGE_STATION_INFO where operator_id in (
select id from ET_OPERATOR))) and data_status='normal'
前提是两条SQL查询出来的字段一模一样,则可以用 “MINUS”连接相减,得出差集