当前位置:首页 » 编程语言 » sql相减函数

sql相减函数

发布时间: 2023-04-21 16:26:22

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”连接相减,得出差集

热点内容
大激战脚本 发布:2024-11-01 18:35:25 浏览:110
中国大学mooc密码要求是什么 发布:2024-11-01 18:33:45 浏览:817
jrtplib编译 发布:2024-11-01 18:06:01 浏览:227
java代码中if 发布:2024-11-01 18:02:40 浏览:378
android定时刷新 发布:2024-11-01 17:59:43 浏览:1000
炎黄解说我的世界服务器生存 发布:2024-11-01 17:59:42 浏览:543
如何清楚网页缓存 发布:2024-11-01 17:53:58 浏览:553
linux文件权限不够 发布:2024-11-01 17:53:19 浏览:918
c语言中10是什么意思 发布:2024-11-01 17:45:08 浏览:893
装棉衣压缩袋 发布:2024-11-01 17:37:18 浏览:298