一些Informix+SQL函数的用法及日期操作
informix函数大全
1)cardinality(仅适用IDS)函数对集合包含的元素数目计数。
智能大对象函数,(仅适用与IDS)
filetoblob( ),将文件复制到BLOB列中
filetoclob( ),将文件复制到CLOB列中
4)SUM(DISTINCT COLNAME) 返回指定列中唯一值的和
5)AVG(COLNAME/EXPRESSION) 返回指定列或表达式中的数值平均值
6)AVG(DISTINCT COLNAME) 返回指定列中唯一值的平均值
lpad,使用lpad函数已用重复次数达到必要次数的字符序列在左边填充或截断的字符串的副本,这取决于字符串中填充部分的指定长度。
举例:字段 col 为char(15)类型,select lpad(col,21,”_”) from tab_name则显示为在col前加上六个_。
2)MOD(COLNAME/EXPRESSION,DIVISOR) 返回除以除数后的模(余数)
3)POW(COLNAME/EXPRESSION,EXPONENT) 返回一个值的指数冥
例子:let tmp_float = pow(2,3) --8.00000000
initcap,将字符串中每个词的首写字母转换成大写
replace,将字符串中的某一组字符转换成其他字符,例replace(col,”each”,”eve”)
substr,返回字符串中的某一部分,例substr(col,1,2)
substring,返回字符串中的某一部分,例substring(col,from 1 to 4)
Nvl,来将求值为空的表达式转化为另一个想要指定的值。
另外还可以在select语句中使用存储过程,如select spl($test) from tab_name
Informix数据库dbaccess工具执行SQL语句操作说明
【文档名称】:Informix数据库dbaccess工具执行SQL语句操作说明【背景说明】部分工程经常要对数据库进行操作,而各省客服及驻点同事对相关操作不熟悉,现整理一份实用的操作说明。
【适用范围】适用设备:Informix-9.4,Informix-11.5【文档正文】1)用informix账户登录操作系统,在开始菜单中打开“ol_实例名”。
2)直接输入dbaccess并回车。
选择Connection,然后选择Connect。
3)选择数据库实例。
一般只有一个,直接回车即可。
4)输入用户名informix,回车。
5)输入数据库密码,回车。
6)下方提示已连接。
7)直接按回车,然后选择Exit回车。
8)选择第一个Query-language回车。
9)选择Use-editor回车。
10)直接回车,默认用记事本打开编辑器。
11)将SQL语句粘贴到记事本。
12)关闭,选择保存,然后选择Run,回车,查看返回结果是否成功。
常用SQL语句:1、导出某张表。
(需注意当前用户对该目录是否有写入权限,否则会导出失败)unload to 'C:\_analarmtype' select * from _analarmtype; 导出_analarmtype表并保存到C盘根目录。
2、删除某张表。
delete from _analarmtype;3、导入某张表。
load from 'C:\ _analarmtype ' insert into _analarmtype;4、查询某张表的条目数。
select count(*) from analarmhis; 查询历史告警条目数select count(*) from ancurrentalarm; 查询当前告警条目数DBACCESS基本讲解.doc。
Informix SQL 语句详解
Informix SQL 语句详解Informix SQL 语句详解(1)1. 创建数据库:CREATE DATABASE database_name [WITH LOG IN “pathname”]database_name:数据库名称。
“pathname”:事务处理日志文件。
创建一database_name.dbs目录,存取权限由GRANT设定,无日志文件就不能使用。
BEGIN WORK等事务语句(可用START DATABASE 语句来改变)。
可选定当前数据库的日志文件。
如:select dirpath form systables where tabtype = “L”; 例:create databse customerdb with log in “/usr/john/log/customer.log”;2. 选择数据库:DATABASE databse-name [EXCLUSIVE]database_name:数据库名称。
EXCLUSIVE:独占状态。
存取当前目录和DBPATH中指定的目录下的数据库,事务中处理过程中不要使用此语句。
例:dtabase customerdb;3. 关闭当前数据库:CLOSE DATABASEdatabase_name:数据库名称。
此语句之后,只有下列语句合法:CREATE DATABASE;DATABASE;DROP DATABSE;ROLLFORWARD DATABASE;删除数据库前必须使用此语句。
例:close database;4. 删除指定数据库:DROP DATABASE database_namedatabase_name:数据库名称。
用户是DBA或所有表的拥有者;删除所有文件,但不包括数据库目录;不允许删除当前数据库(须先关闭当前数据库);事务中处理过程中不能使用此语句,通过ROLLBACK WORK 也不可将数据库恢复。
例:drop databse customerdb;5. 创建表或临时表:CREATE [TEMP] TABLE table-name (column_name datatype [NOT NULL], …) [IN “pathname”]table-name :表名称。
informix函数
Informix函数在Informix数据库中,函数是一个可重复使用的代码块,用于执行特定的操作或计算。
函数可以接收参数并返回结果。
本文将介绍Informix中常用的函数,并提供相应的示例和说明。
1. 字符串函数1.1 LOWER()LOWER()函数将指定字符串中的大写字母转换为小写字母。
示例:SELECT LOWER('Hello World') AS lower_string;输出:lower_string--------------hello world1.2 UPPER()UPPER()函数将指定字符串中的小写字母转换为大写字母。
SELECT UPPER('Hello World') AS upper_string;输出:upper_string--------------HELLO WORLD1.3 LENGTH()LENGTH()函数返回指定字符串的长度。
示例:SELECT LENGTH('Hello World') AS string_length;输出:string_length--------------112. 数值函数2.1 ABS()ABS()函数返回指定数值的绝对值。
SELECT ABS(-10) AS absolute_value;输出:absolute_value-------------102.2 ROUND()ROUND()函数将指定数值四舍五入到指定的小数位数。
示例:SELECT ROUND(3.14159, 2) AS rounded_value;输出:rounded_value--------------3.142.3 MOD()MOD()函数返回两个数值相除的余数。
示例:SELECT MOD(7, 3) AS remainder;输出:remainder---------13. 日期函数3.1 CURRENTCURRENT函数返回当前日期和时间。
SQLPLSQL日期函数总结
SQLPLSQL日期函数总结日期函数在SQL/PLSQL中用于对日期进行计算和操作。
下面是一些常用的日期函数总结。
1.SYSDATE函数:SYSDATE函数用于返回系统当前日期和时间。
它返回一个日期值,包含当前日期和时间的年、月、日、时、分和秒。
2.CURRENT_DATE函数:CURRENT_DATE函数与SYSDATE函数功能相似,返回系统当前日期,但没有时间部分。
3.CURRENT_TIMESTAMP函数:CURRENT_TIMESTAMP函数返回包含当前日期和时间的时间戳。
4.TO_DATE函数:TO_DATE函数用于将一个字符串转换为日期。
它接受两个参数:带日期的字符串和日期格式模型。
例如,TO_DATE('2024-08-15','YYYY-MM-DD')返回一个日期值。
5.TO_CHAR函数:TO_CHAR函数用于将一个日期值转换为字符串。
它接受两个参数:日期值和日期格式模型。
例如,TO_CHAR(SYSDATE,'YYYY-MM-DD')返回当前日期的字符串表示。
6.ADD_MONTHS函数:ADD_MONTHS函数用于在给定日期上添加指定的月份数。
它接受两个参数:日期值和要添加的月份数。
例如,ADD_MONTHS(SYSDATE,3)返回当前日期的三个月后的日期。
7.MONTHS_BETWEEN函数:MONTHS_BETWEEN函数用于计算两个日期之间的月份数。
它接受两个参数:两个日期值。
例如,MONTHS_BETWEEN('2024-01-01','2024-01-01')返回两个日期之间的月份数。
8.EXTRACT函数:EXTRACT函数用于从日期中提取指定的部分。
它接受两个参数:要提取的部分(如年、月、日)和日期值。
例如,EXTRACT(YEARFROMSYSDATE)返回当前日期的年份。
9.TRUNC函数:TRUNC函数用于截断日期部分,并返回一个新的日期值。
Informix数据库SQL介绍
Informix数据库SQL介绍INFORMIX SQL 介绍⼀、简介:1)、INFORMIX主要产品分为三⼤部分:; 数据库服务器(数据库核⼼); 应⽤开发⼯具; ⽹络数据库互联产品2)、数据库服务器有两种,作⽤都是提供数据操作和管理:; SE:完全基UNIX操作系统,主要针对⾮多媒体的较少⽤户数的应⽤; ONLINE:针对⼤量⽤户的联机事务处理和多媒体应⽤环境3)、应⽤开发⼯具是⽤以开发应⽤程序必要的环境和⼯具,主要也有两个系列:; 4GL:INFORMIX传统的基字符界⾯的开发⼯具,该系列的主要产品有五个,他们是I-SQL、4GL RDS、4GL C COMPILER、4GL ID和ESQL/C;; NewEra:INFORMIX最新提供的具有事件驱动能⼒、⾯向对象的基各种图形界⾯的开发⼯具。
4)、INFORMIX的⽹络数据库互联产品:提供给⽤户基多种⼯业标准的应⽤程序接⼝,通过它可以和其它遵守这些⼯业标准的数据库联接。
⼆、I-SQL菜单简介:Form可以执⾏、创建、修改、编译屏幕格式或删除已存在的屏幕格式Run执⾏某⼀已经存在的屏幕格式Modify修改指定的已经存在的屏幕格式Generate 为指定的表创建⼀个缺省的屏幕格式Compile编译⼀个制定的屏幕格式New创建特定的⽤户屏幕格式Drop删除某已经存在的格式⽂件Exit退出Form菜单Report 可以执⾏、建⽴、修改、编译、或删除报表Run执⾏某⼀报表Modify修改指定的报表Generate 为某⼀个表建⽴⼀个缺省的报表New建⽴⼀个⽤户指定的报表Compile编译指定的报表Drop删除⼀个指定的已经存在的报表Exit退出Report菜单Query-Language详见实⽤程序说明:dbaccessUser-menu 可以执⾏、建⽴或修改⽤户建⽴的菜单Run执⾏当前数据库的⽤户菜单Modify允许⽤户建⽴或修改⽤户菜单Exit退出User-menu菜单Database详见实⽤程序说明:dbaccessTable详见实⽤程序说明:dbaccessExit退出实⽤程序isqlrf(或isql)三、常⽤操作:; 创建数据库ISQL==》DATABASE==》CREATE==》输⼊新建数据库名称; 创建表ISQL==》TABLE==》CREATE==》输⼊欲建的表名==》ADD==》输⼊欲建的字段名及类型等==》EXIT==》BUILD-NEW-TABLE; ⽣成缺省表格式ISQL==》FORM==》GENERATE=》选择数据库==》输⼊表格式名称==》选择表==》TABLE-SELECTION-COMPLETE-----》编译成功==》RUN四、使⽤RDSQL(交互式查询语⾔)编写SQL语句⽅法:ISQL==》Query Langavage==》NEW==》RUN; 建⽴数据库CREATE DATABASE数据库名; 建表(格式及可选数据类型)基本格式:CREATE TABLE表名(字段名类型,字段名类型,---字段名类型);详细定义:CREATE TABLE表名(COL1INTEGER NOT NULL,COL2CHAR(2)CHECK ( COL2IN (“??”,“??”),COL3DATE DEFAULT TODAY,COL4SMALLINT UNIQUE,---字段名类型)FRAGMENT BY ROUND ROBIN (BY EXPRESSION)IN DB1,DB2EXTENT SIZE 1000 NEXT SIZE 600WITH NO LOG (LOG;BUFFERED LOG;LOG MODE ANSILOCK MODE ROW(PAGE);例1:CREATE TABLE ORDERS(ORDER_NUM INTEGERUNIQUE CONSTRAINT ORDER_NUM_UQ,ORDER_DATE DATENOT NULL CONSTRAINT ORDER_DA TE_NNDEFAULT TODAY ;例2:CREATE TABLE CUSTOMER (CUSTOMER_NUM SERIAL,FNAME CHAR(20),PRIMARY KEY (CUSTOMER_NUM)CONSTRAINT PK_CNUM);CREATE TABLE ORDERS (ORDER_NUM SERIAL,CUSTOMER_NUM INTEGER,FOREIGN KEY (CUSTOMER_NUM)REFERENCES CUSTOMERCONSTRAINT FK_CNUM);数据类型:字符型(CHAR(20)),V ARCHAR(MINSIZE, MAXSIZE)数值型(六种,DECIMAL(16,2),SMALLINT,INTEGER,SMALLFLOAT,FLOAT,SERIAL ) ⽇期型( DATE,默认格式为:MM/DD/YYYY )**要修改DATE类型的缺省格式, 只要在⽤户主⽬录的.profile⽂件中做如下说明: DBDATE=Y4MD/EXPORT DBDA TE**货币型(MONEY (8,2))其它(如:INTERV AL,DA TETIME等); 建⽴索引(必须建⽴命名索引)CREATE[ UNIQUE ]INDEX索引名ON表名(字段名)CREATE[ UNIQUE ]INDEX索引名ON表名(字段名)DISABLED;SET INDEXES索引名ENABLEDDROP INDEX索引名; 数据库权限CONNECT:访问数据库RESOURCE:允许⽤户建⽴或清除数据库中的表和索引DBA:数据库管理员,所有权限,⼀般建表者即为DBAGRANT权限TO〈PUBLIC | ⽤户名〉REVOKE权限FROM〈PUBLIC | ⽤户名〉; 检索数据库DA TABASE数据库名SELECT * FROM表名SELECT字段名,字段名FROM表名SELECT字段名,字段名+-*/新字段名FROM表名SEKECT A VG(字段) ,MIN(),MAX(),SUM(),COUNT()FROM表名WHERE⼦句 =〈〉!=< <=>>=MATCHES* 0多个? 单个[ ] 单个字符或⼀个范围\ 转义下⼀个字符LIKE %:0--多个 _ 单个\ 转义下⼀个特殊字符ORDER BY(DESC)时间函数: DAY MDY MONTH WEEKDAY YEAR DATE CURRENT其它函数:LENGTH USER CURRENT TODAY从多个表中查找, SELECT嵌套字段名不同可直接写出,若不同表中有相同字段名,则前缀表名SELECT表⼀.字段名FROM表⼀, 表⼆向表中插⼊数据INSERT INTO表名 [ 列1, 列2。
INFORMIX数据库函数
一、内部函数1、内部合计函数1)COUNT(*)返回行数2)COUNT(DISTINCT COLNAME)返回指定列中唯一值的个数3)SUM(COLNAME/EXPRESSION)返回指定列或表达式的数值和;4)SUM(DISTINCT COLNAME)返回指定列中唯一值的和5)AVG(COLNAME/EXPRESSION)返回指定列或表达式中的数值平均值6)AVG(DISTINCT COLNAME)返回指定列中唯一值的平均值7)MIN(COLNAME/EXPRESSION)返回指定列或表达式中的数值最小值8)MAX(COLNAME/EXPRESSION)返回指定列或表达式中的数值最大值2、日期与时间函数1)DAY(DATE/DATETIME EXPRESSION)返回指定表达式中的当月几号2)MONTH(DATE/DATETIME EXPRESSION)返回指定表达式中的月份3)YEAR(DATE/DATETIME EXPRESSION)返回指定表达式中的年份4)WEEKDAY(DATE/DATETIME EXPRESSION)返回指定表达式中的当周星期几5)DATE(NOT DATE EXPRESSION)返回指定表达式代表的日期值6)TODAY 返回当前日期的日期值7)CURRENT[FIRST TO LAST] 返回当前日期的日期时间值8)COLNAME/EXPRESSION UNITS PRECISION 返回指定精度的指定单位数9)MDY(MONTH,DAY,YEAR)返回标识指定年、月、日的日期值10)DATETIME(DATE/DATETIME EXPRESSION)FIRST TO LAST 返回表达式代表的日期时间值11)INTERVAL(DATE/DATETIME EXPRESSION)FIRST TO LAST 返回表达式代表的时间间隔值12)EXTEND(DATE/DATETIME EXPRESSION,[FIRST TO LAST])返回经过调整的日期或日期时间值To_char函数将datetime和date值转化为字符值。
informix的常用SQL语句
informix的常用SQL语句1、创建数据库eg1. 创建不记录日志的库testdb,参考语句如下:CREATE DATABASE testdb;eg2. 创建带缓冲式的记录日志的数据库testdb(SQL语句不一定在事务之中,拥有者名字不被用于对象的解析),参考语句如下:CREATE DATABASE testdb WITH BUFFERED LOG;eg3. 创建无缓冲式的记录日志的数据库testdb(SQL语句不一定在事务之中,拥有者名字不被用于对象的解析),参考语句如下:CREATE DATABASE testdb WITH LOG;eg4. 创建ANSI的数据库(记录日志时无缓冲,SQL总在事务之中,拥有者名字被用于对象的解析),参考语句如下:CREATE DATABASE testdb WITH LOG MODE ANSI;2、创建普通数据表普通数据表又被称为持久数据表,它在system catalog里注册。
一个普通数据表可对多个sessi on和connection。
创建时可以指定dbspace。
eg1、如下语句创建了一个集团信息表cti_vccinfo:create table cti_vccinfo(vccid CHAR(6) not null,vccname VARCHAR(255),effective INTEGER default0not null,agentmax INTEGER default0not null,ivrmax INTEGER default0not null,updatekey VARCHAR(30),primary key(vccid) constraint PK_CTI_VI);3、创建临时数据表临时数据表不在system catalog里注册。
一个临时数据表只对对应的某个session或connectio n可见,在对应的session或connection结束时被自动清除。
informix sql函数使用说明大全
informix sql函数使用说明大全一、内部函数1、内部合计函数1)COUNT(*)返回行数2)COUNT(DISTINCT COLNAME)返回指定列中唯一值的个数3)SUM(COLNAME/EXPRESSION)返回指定列或表达式的数值和;4)SUM(DISTINCT COLNAME)返回指定列中唯一值的和5)AVG(COLNAME/EXPRESSION)返回指定列或表达式中的数值平均值6)AVG(DISTINCT COLNAME)返回指定列中唯一值的平均值7)MIN(COLNAME/EXPRESSION)返回指定列或表达式中的数值最小值8)MAX(COLNAME/EXPRESSION)返回指定列或表达式中的数值最大值2、日期与时间函数1)DAY(DATE/DATETIME EXPRESSION)返回指定表达式中的当月几号2)MONTH(DATE/DATETIME EXPRESSION)返回指定表达式中的月份3)YEAR(DATE/DATETIME EXPRESSION)返回指定表达式中的年份4)WEEKDAY(DATE/DATETIME EXPRESSION)返回指定表达式中的当周星期几5)DATE(NOT DATE EXPRESSION)返回指定表达式代表的日期值6)TODAY 返回当前日期的日期值7)CURRENT[FIRST TO LAST] 返回当前日期的日期时间值8)COLNAME/EXPRESSION UNITS PRECISION 返回指定精度的指定单位数9)MDY(MONTH,DAY,YEAR)返回标识指定年、月、日的日期值10)DATETIME(DATE/DATETIME EXPRESSION)FIRST TO LAST 返回表达式代表的日期时间值11)INTERVAL(DATE/DATETIME EXPRESSION)FIRST TO LAST 返回表达式代表的时间间隔值12)EXTEND(DATE/DATETIME EXPRESSION,[FIRST TO LAST])返回经过调整的日期或日期时间值To_char函数将datetime和date值转化为字符值。
SQL日期函数daymonthyear各种使用方法
SQL日期函数daymonthyear各种使用方法1. day(函数:- day(date): 返回指定日期中的天数。
- 示例:SELECT day('2024-09-01'); 返回结果为12. month(函数:- month(date): 返回指定日期中的月份。
- 示例:SELECT month('2024-09-01'); 返回结果为93. year(函数:- year(date): 返回指定日期中的年份。
- 示例:SELECT year('2024-09-01'); 返回结果为2024在使用day(、month(、year(函数时,需要注意以下几点:1.日期格式:-在使用这些函数之前,需要确保传递的日期参数是有效的日期格式,通常是YYYY-MM-DD。
-若日期格式不正确,函数可能会返回错误或无效的结果。
2.使用数据库特定的日期函数:-不同的数据库管理系统可能有不同的日期函数语法和用法。
-在编写SQL查询时,需要根据所使用的数据库系统来使用正确的日期函数。
3.使用与日期函数相关的其他函数:-日期函数还可以与其他函数一起使用来处理和获取更复杂的日期信息。
- 例如,可以将day(、month(和year(函数与聚合函数(如SUM、COUNT等)一起使用,以计算段时间内的总天数、月份数或年份数。
下面是一些使用day(、month(、year(函数的示例:1.获取当前日期的天数、月份和年份:- SELECT day(current_date);- SELECT month(current_date);- SELECT year(current_date);2.获取一些日期的天数、月份和年份:- SELECT day('2024-09-01');- SELECT month('2024-09-01');- SELECT year('2024-09-01');3.对日期字段进行筛选:- SELECT * FROM table WHERE day(date_column) = 1;- SELECT * FROM table WHERE month(date_column) = 9;- SELECT * FROM table WHERE year(date_column) = 2024;4.计算两个日期之间的天数差:- SELECT datediff(date1, date2);- 示例:SELECT datediff('2024-09-10', '2024-09-01'); 返回结果为95.获取当前日期的加减操作:- SELECT current_date + interval 1 day; (当前日期加1天)- SELECT current_date - interval 1 month; (当前日期减去1个月)- SELECT current_date + interval 1 year; (当前日期加1年)以上示例仅演示了day(、month(、year(函数的基本用法,并且可能因不同的数据库而有所差异。
SQL所有日期函数用法
sql中日期函数的用法————————————————————————————————————————1.DateAdd (I , N , D )将一个日期加上一段期间后的日期。
I :设定一个日期(Date )所加上的一段期间的单位。
譬如interval="d" 表示N的单位为日。
I的设定值如下:yyyy Year 年q Quarter 季m Month 月d Day 日w Weekday 星期h Hour 时n Minute 分s Second 秒N :数值表达式,设定一个日期所加上的一段期间,可为正值或负值,正值表示加(结果为>date 以后的日期),负值表示减(结果为>date 以前的日期)。
D :待加减的日期。
例子:DateAdd ("m" , 1 , "31-Jan-98")结果:28-Feb-98说明:将日期31-Jan-98 加上一个月,结果为28-Feb-98 而非31-Fe-98 。
例子:DateAdd ("d" , 20 , "30-Jan-99")结果:1999/2/9说明:将一个日期30-Jan-99 加上20 天后的日期。
2.Day( 日期的字符串或表达式)传回日期的「日」部份。
例子:Day(" 12/1/1999 ")结果: 13.DateDiff (I , D1 , D2[,FW[,FY]])计算两个日期之间的期间。
I :设定两个日期之间的期间计算之单位。
譬如>I="m" 表示计算的单位为月。
>I 的设定值如:yyyy > Year 年q Quarter 季m Month 月d Day 日w Weekday 星期h Hour 时n Minute 分s Second 秒D1 ,D2:计算期间的两个日期表达式,若>date1 较早,则两个日期之间的期间结果为正值;若>date2 较早,则结果为负值。
informix学习总结
INFORMIX的学习第一章ESQL/C的数据类型数据类型SQL与C数据类型的对应简单类型SQL ? ? ? ? CCHAR(n)? ? ? ? ? char(n+1)CHARCTER(n)? ? ? char *SMALLINT ? ? ? ? ?short intINTERGERINT ? ? ? ? ?long intSMALLFLOATREAL ? ? ? ? ?floatFLOATDOUBLE PRECISIONdoubleSERIAL ? ? ? ? ? long intDATE ? ? ? ? ? long int复杂类型SQL ? ? ? ? ? CDECIMALDEC NUMERIC ? ? ? ? ?dec_t or struct decimalMONEY ? ? ? ? ?dec_t or struct decimalDATETIME ? ? ? ? ?dtime_t or struct dtimeINREVER ? ? ? ? ? ? ?intrvl_t or struct intrvlVARCHAR ? ? ? ? ? ? ?varchar or string数据类型转换转换类型?转换后FLOAT ?DECIMAL(16)SMALLFLOAT ?DECIMAL(8)INTERGER ?DECIMAL(10,0)SAMLLINT ?DECIMAL(5,0)?数据类型的转换函数有关CHAR类型的函数1、以空值结尾的串的操作函数rdownshift(char *s) ? ? ? ? ?把一个字符串中的所有字母转换成小写形式。
rupshift(char *s) ? ? ? ? ? ? 把一个字符串中的所有字母转换成大写形式。
stcat(char *s, char *dest) ? ? ?把一个字符串同另一个字符串相连接。
stcmpr(char *s1, char *s2) ? ? 比较两个字符串。
SQL所有日期函数用法
SQL所有日期函数用法sql中日期函数的用法————————————————————————————————————————1.DateAdd (I , N , D )将一个日期加上一段期间后的日期。
I :设定一个日期(Date )所加上的一段期间的单位。
譬如interval="d" 表示N的单位为日。
I 的设定值如下:yyyy Y ear 年q Quarter 季m Month 月d Day 日w Weekday 星期h Hour 时n Minute 分s Second 秒N :数值表达式,设定一个日期所加上的一段期间,可为正值或负值,正值表示加(结果为>date 以后的日期),负值表示减(结果为>date 以前的日期)。
D :待加减的日期。
例子:DateAdd ("m" , 1 , "31-Jan-98")结果:28-Feb-98说明:将日期31-Jan-98 加上一个月,结果为28-Feb-98 而非31-Fe-98 。
例子:DateAdd ("d" , 20 , "30-Jan-99")结果:1999/2/9说明:将一个日期30-Jan-99 加上20 天后的日期。
2.Day( 日期的字符串或表达式)传回日期的「日」部份。
例子:Day(" 12/1/1999 ")结果: 13.DateDiff (I , D1 , D2[,FW[,FY]])计算两个日期之间的期间。
I :设定两个日期之间的期间计算之单位。
譬如>I="m" 表示计算的单位为月。
>I 的设定值如:yyyy > Y ear 年q Quarter 季m Month 月d Day 日w Weekday 星期h Hour 时n Minute 分s Second 秒D1 ,D2:计算期间的两个日期表达式,若>date1 较早,则两个日期之间的期间结果为正值;若>date2 较早,则结果为负值。
INFORMIX数据库操作及SQL语法
编号:TN-070101001TIENON数据库培训教程INFORMIX基本操作及SQL语法2007年1月,V 1.00目录1、引言 (4)1.1、读者对象 (4)1.2、内容简介 (4)1.3、课程时间 (4)1.4、课程目标 (4)2、数据库基本概念...................................................... 错误!未定义书签。
2.1、从身边的例子了解数据库......................................................... 错误!未定义书签。
2.2、数据库系统概述......................................................................... 错误!未定义书签。
2.2.1、数据库的产生.................................................. 错误!未定义书签。
2.2.2、数据库系统组成................................................ 错误!未定义书签。
2.2.3、与数据库相关的软件系统........................................ 错误!未定义书签。
2.2.4、数据库系统特点................................................ 错误!未定义书签。
2.2.5、数据库系统的历史.............................................. 错误!未定义书签。
2.2.6、数据库系统的发展趋势.......................................... 错误!未定义书签。
2.2.7、数据库的分类.................................................. 错误!未定义书签。
Informix常用函数
3)LOG10(COLNAME/EXPRESSION) 返回指定列或表达式的底数位10的对数值
5、三角函数
1)COS(RADIAN EXPRESSION) 返回指定弧度表达式的余弦值
例子1:返回数据中每个表的DBSPACE名称
select dbinfo('dbspace',partnum),tabname from systables
where tabid>99 and tabtype='T' (OK)
例子2:返回任何表中插入的最后一个SERIAL值
2)MOD(COLNAME/EXPRESSION,DIVISOR) 返回除以除数后的模(余数)
3)POW(COLNAME/EXPRESSION,EXPONENT) 返回一个值的指数冥
例子:let tmp_float = pow(2,3) --8.00000000
8)COLNAME/EXPRESSION UNITS PRECISION 返回指定精度的指定单位数
9)MDY(MONTH,DAY,YEAR) 返回标识指定年、月、日的日期值
10)DATETIME(DATE/DATETIME EXPRESSION)FIRST TO LAST 返回表达式代表的日期时间值
2)MONTH(DATE/DATETIME EXPRESSION) 返回指定表达式中的月份
3)YEAR(DATE/DATETIME EXPRESSION) 返回指定表达式中的年份
4)WEEKDAY(DATE/DATETIME EXPRESSION) 返回指定表达式中的当周星期几
sql日期函数
sql日期函数SQL日期函数是SQL语言中一类重要的字符函数,它用来处理日期和时间类型的数据。
SQL日期函数可以用来提取或计算特定的部分的日期和时间,以满足用户的特定要求。
本文就SQL日期函数的功能,分类,用法及注意事项作一详细的探讨。
一、SQL日期函数的功能SQL日期函数提供了各种操作日期和时间类型数据的方法,比如获取特定日期的年、月和日,将日期进行加减操作,计算两个日期的差值,以及在日期上求和或差值等。
SQL日期函数可以帮助用户更加精确地把握处理日期和时间方面的数据。
二、SQL日期函数的分类SQL日期函数可以根据它们的功能,划分为日期提取函数,日期转换函数,日期加减函数,日期运算函数和日期比较函数五类: 1.日期提取函数:DAY()函数:返回指定日期中的天数;MONTH()函数:返回指定日期中的月份;YEAR()函数:返回指定日期中的年份;2.日期转换函数:DATE_FORMAT()函数:返回指定日期的格式;STR_TO_DATE()函数:将字符串转换为日期;3.日期加减函数:DATE_ADD()函数:在指定日期上加上指定的时间间隔;DATE_SUB()函数:从指定的日期上减去指定的时间间隔;4.日期运算函数:TIMEDIFF()函数:返回两个日期相差的时间;TIMESTAMP()函数:返回指定日期的时间戳;5.日期比较函数:DATE_GREATER_THAN()函数:返回指定日期是否大于另一个日期;DATE_LESS_THAN()函数:返回指定日期是否小于另一个日期; DATE_EQUAL()函数:返回指定日期是否等于另一个日期。
三、SQL日期函数的用法1.日期提取函数的使用:例如,我们要查询今天是本月的第几天,可以使用DAY()函数,其代码如下:select day(CURRENT_DATE);2.日期转换函数的使用:例如,我们要将字符串“2020-04-10”转换成日期格式,可以使用STR_TO_DATE()函数,其代码如下:select STR_TO_DATE(2020-04-10%Y-%m-%d3.日期加减函数的使用:例如,我们要在当前日期的基础上加上3天,可以使用DATE_ADD()函数,其代码如下:select DATE_ADD(CURRENT_DATE,INTERVAL 3 DAY);4.日期运算函数的使用:例如,我们要计算指定时间 20170920当前时间的时间差,可以使用TIMEDIFF()函数,其代码如下:select TIMEDIFF(CURRENT_TIMESTAMP,201709205.日期比较函数的使用:例如,我们要比较指定日期“20201128”是否大于“20201119”,可以使用DATE_GREATER_THAN()函数,其代码如下:select DATE_GREATER_THAN(2020112820201119四、SQL日期函数的注意事项1.SQL日期函数的计算结果并不总是直观的,比如,当我们在一个月中查询第31天时,如果当月实际天数小于31,则此时需输出NULL值;2.SQL日期函数操作时需要考虑到日期的偏移量以及不同数据库的日期存储格式,以便正确计算日期;3.尽量不要使用字符串比较日期,可以用合适的日期比较函数来替换。
INFORMIX函数大全
目录INFORMIX数据类型 (2)表达式用途 (3)表达式 (4)校正表达式 (4)条件表达式 (4)一般性CASE表达式 (4)线形CASE表达式 (5)常量表达式 (5)引号字符串表达式 (6)函数清单 (6)ABS函数 (9)DBINFO函数 (10)CARDINALITY函数 (14)长度函数 (14)DA TE函数 (15)DAY函数 (15)三角函数 (16)ACOS函数 (16)ASIN函数 (16)ATAN函数 (16)ATAN2函数 (16)COUNT函数 (17)COUNT(*)函数 (17)COUNT DISTINCT和COUNT UNIQUE函数 (17)A VG函数 (18)USER函数 (18)DBSERVERNAME 和SITENAME函数 (18)TODAY函数 (18)CURRENT函数 (18)DA TETIME (19)COLUMN (19)Concatonation 运算符 (19)DECODE函数 (19)EXP函数 (20)EXTEND函数 (20)FILETOBLOB函数和FILETOCLOB函数 (21)HEX函数 (22)IFX_ALLOW_NEWLINE函数 (22)IPX_REPLACE_MODULE函数 (22)INITCAP函数 (23)LOCOPY函数 (23)LOGN函数 (24)LOGN10函数 (24)LOTOFILE函数 (25)LOWER函数 (26)LPAD(源字符串,长度,嵌入字符串) (26)RPAD(源字符串,长度,嵌入字符串) (26)MAX(数字列|数字表达式) (26)MIN(数字列|数字表达式) (26)MDY(expr1,expr2,expr3) (26)MOD(被除数,除数) (26)MONTH(date/dtime_expr) (26)NVL(表达式1,表达式2) (27)OCTET_LENGTH(变量名|列命) (27)POW(底数,指数) (27)RANGE(数字列|数字表达式) (27)REPLACE(源字符串,匹配字符串,新字符串) (27)ROOT(被开方数,指数) (27)ROUND(数字表达式,圆整系数) (27)SIN(弧度) (27)SITENAME (27)STDEV(数字列) (27)SUBSTR(源字符串,开始位置,长度) (27)SUM(数字列|数字表达式) (28)TAN(弧度) (28)TO_CHAR(DA TE|DA TETIME,格式字符串) (28)TO_DATE(字符表达式,格式字符串) (28)TODAY (28)TRIM([LEADING|TRAILING|BOTH] trim_expr FROM source_expr) (28)TRUNC(表达式,截去系数) (29)UPPER(源字符串) (29)V ARIANCE(数字列) (29)WEEKDAY(date|dtime_expr) (29)YEAR(date|dtime_expr) (29)INFORMIX数据类型表达式用途表达式校正表达式CAST(表达式::target_data_type AS target_data_type)可以用CAST AS关键字或双冒号校正操作符(::)将一种数据类型的表达式校正为另一种数据类型的表达式。
Informix日期获取上周上月昨天去年SQL
Informix⽇期获取上周上⽉昨天去年SQL 1、准备测试表由于Informix没有dual表,我们新建test_tab,并插⼊⼀条数据作为测试表。
建表--建表create table test_tab(testId int,insert_time datetime year to second default current year to second --插⼊时间默认当前时间);--插⼊⼀条数据insert into test_tab(testId) values(1);查看测试表--查询测试表select * from test_tab;testId insert_time1 2018-11-28 16:31:182、⽇期转换转换⽇期为指定字符串格式,如yyyy-MM-dd HH:mm:ss格式:select testid, to_char(today, '%Y-%m-%d %H:%M:%S') as cur_timefrom test_tab;testId cur_time1 2018-11-28 00:00:00today 指今天 yyyy-MM-dd转换字符串为⽇期格式,如字符串 '2018/11/28 16:31:18'select testid, to_date('2018/11/28 16:31:18', '%Y/%m/%d %H:%M:%S') as cur_timefrom test_tab;testId cur_time1 2018-11-28 16:31:183、获取上个⼩时,昨天和上个⽉理解了相关函数,实现⽅式⾮常多,接下来会举⼀些例⼦。
昨天select testid, today - 1 as yeaterday,sysdate - 1 units day as yeaterday_tfrom test_tab;testId yeaterday yeaterday_t1 2018-11-27 2018-11-27 16:31:18sysdate 指当前时间 yyyy-MM-dd HH:mm:ss当前时间减去⼀天即为昨天此时上个⼩时select testid,sysdate-1 units hour lasthour,sysdate - interval(1) hour to hour lasthour1,extend(sysdate-1 units hour,year to hour) lasthour2from test_tab;testId lasthour lasthour1 lasthour21 2018-11-28 16:29:03 2018-11-28 16:29:03 2018-11-28 16:00:00extend 可以把⽇期处理成想要的精度上周⽇期select testid,today as cur_date,to_char(today,'%A') as weekstr,weekday(today) as wday,today -weekday(today) as lastsunday,today -weekday(today)-6 as lastmondayfrom test_tab;testId cur_date weekstr wday lastsunday lastmonday1 2018-11-28 Wednesday 3 2018-11-25 2018-11-19weekday(today) 显⽰当前是周的第⼏天,可以理解为 dayOfWeekday(today)则可表⽰dayOfMonth上⽉⽇期select testid,today as cur_date,to_char(sysdate-1 units month,'%Y%m') as lastmon_str,day(today) as dday,today -day(today) as lastmon_end,to_date(to_char(sysdate-1 units month,'%Y%m')|| '01', '%Y%m%d') as lastmon_begin,extend(sysdate - 1 units month,year to month) as lastmon_begin1from test_tab;testId cur_date lastmon_str dday lastmon_end lastmon_begin lastmon_begin1 1 2018-11-28 201810 28 2018-10-31 2018-10-01 00:00:00 2018-10-01 00:00:00 select testid,today as cur_date,mdy(month(today),1,year(today)) thismonth,mdy(month(today)-1,1,year(today)) lastmon_begin,mdy(month(today),1,year(today))-1 units day lastmon_endfrom test_tabtestId cur_date thismonth lastmon_begin lastmon_end1 2018-11-28 2018-11-01 2018-10-01 2018-10-31 00:00:00informix⾥字符串拼接使⽤ "||"mdy(m,d,y)。
Informix日期相关的
1:TO_CHAR() 函数TO_CHAR(today,'%D') 08/10/09TO_CHAR(today,'%y-%m-%d') 09-08-10TO_CHAR(today,'%Y-%m-%d') 2009-08-10TO_CHAR(today,'%A %B %d %Y') Monday August 10 20092:INFORMIX 日期的算法select first 1 today,current,current -1 units year,current -1 units day,current -1 units hour,current -1 units minute,current -1 units second from systablesselect first 1 extend(current,year to day),extend(current,year to second),extend(current,year to year),extend(current,hour to second) from systablesselect first 1 extend(current,year to day), extend(current,year to day)-1 units day,extend(current,year to second),extend(current,year to year),extend(current,hour to second) from systablesselect first 1 to_char(current,'%Y%m%d') from systables --Y大写和小写有区别,Y大写年份用4位数字,y小写年份用2位数字select first 1 extend(to_date('20091015','%Y%m%d'),year to day) from systablesselect first 1 day(current) from systables --直接取天select first 1 date(current) from systables --取到天select first 1 date(current) - interval(2) day to day from systables --当前日期减2天select first 1 date(current) - interval(2) year to year from systables--当前日期减2年select first 1 current,current - 2 units minute from systables --当前日期减2分钟select first 1 current,date(current)-2 units day,extend(date(current),year to minute)-2 units minute from systables时间格式的字段可以直接和integer进行加减运算,需要注意的是加减运算的参与字段单位必须统一,例如 extend (year to minute)的最小单位是分钟,那么只能和分钟进行运算例如select first 1 current,date(current) - 2 units day,extend(date(current),year to minute) - 2 units minute from systables而不能select first 1 current,date(current) - 2 units day,extend(date(current),year to minute) - 2 units second from systables 会报错today current类似于oracle的sysdateinformix的日期的format可以参考informix的global support GLS User's。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一些Informix SQL函数的用法一、内部函数1、内部合计函数1)COUNT(*)返回行数2)COUNT(DISTINCT COLNAME)返回指定列中唯一值的个数3)SUM(COLNAME/EXPRESSION)返回指定列或表达式的数值和;4)SUM(DISTINCT COLNAME)返回指定列中唯一值的和5)A VG(COLNAME/EXPRESSION)返回指定列或表达式中的数值平均值6)A VG(DISTINCT COLNAME)返回指定列中唯一值的平均值7)MIN(COLNAME/EXPRESSION)返回指定列或表达式中的数值最小值8)MAX(COLNAME/EXPRESSION)返回指定列或表达式中的数值最大值2、日期与时间函数1)DAY(DATE/DATETIME EXPRESSION)返回指定表达式中的当月几号2)MONTH(DATE/DATETIME EXPRESSION)返回指定表达式中的月份3)YEAR(DA TE/DATETIME EXPRESSION)返回指定表达式中的年份4)WEEKDAY(DA TE/DA TETIME EXPRESSION)返回指定表达式中的当周星期几5)DATE(NOT DATE EXPRESSION)返回指定表达式代表的日期值6)TODAY返回当前日期的日期值7)CURRENT[first to last]返回当前日期的日期时间值8)COLNAME/EXPRESSION UNITS PRECISION返回指定精度的指定单位数9)MDY(MONTH,DAY,YEAR)返回标识指定年、月、日的日期值10)DATETIME(DA TE/DA TETIME EXPRESSION)FIRST TO LAST 返回表达式代表的日期时间值11)INTERV AL(DA TE/DA TETIME EXPRESSION)FIRST TO LAST 返回表达式代表的时间间隔值12)EXTEND(DATE/DATETIME EXPRESSION,[first to last])返回经过调整的日期或日期时间值例子1、和UNITS合用,指定日期或时间单位(year,month,day,hour,minute,second,fraction):let tmp_date = TODAY+ 3 UNITS day例子2、let tmp_date = MDY(10,30,2002)-- 2002-10-30例子3、let tmp_date = today + interval(7) day to day--当前时间加上7天;注:该功能与1相似;例子4、EXTEND转换日期或日期时间值let tmp_inthour = EXTEND(datetime1,hour to hour)3、代数函数1)ABS(COLNAME/EXPRESSION):取绝对值2)MOD(COLNAME/EXPRESSION,DIVISOR)返回除以除数后的模(余数)3)POW(COLNAME/EXPRESSION,EXPONENT)返回一个值的指数冥例子:let tmp_float = pow(2,3)--8.000000004)ROOT(COLNAME/EXPRESSION,[index])返回指定列或表达式的根值5)SQRT(COLNAME/EXPRESSION)返回指定列或表达式的平方根值6)ROUND(COLNAME/EXPRESSION,[factor])返回指定列或表达式的圆整化值7)TRUNC(COLNAME/EXPRESSION,[factor])返回指定列或表达式的截尾值说明:上两者中FACTOR指定小数位数,若不指定,则为0;若为负数,则整化到小数点左边;注:ROUND是在指定位上进行4舍5入;TRUNC是在指定位上直接截断;let tmp_float = ROUND(4.555,2) --4.56let tmp_float = TRUNC(4.555,2) --4.554、指数与对数函数1)EXP(COLNAME/EXPRESSION)返回指定列或表达式的指数值2)LOGN(COLNAME/EXPRESSION)返回指定列或表达式的自然对数值3)LOG10(COLNAME/EXPRESSION)返回指定列或表达式的底数位10的对数值5、三角函数1)COS(RADIAN EXPRESSION)返回指定弧度表达式的余弦值2)SIN(RADIAN EXPRESSION)正弦3)TAN(RADIAN EXPRESSION)正切4)ACOS(RADIAN EXPRESSION)反余弦5)ASIN(RADIAN EXPRESSION)反正弦6)ATAN(RADIAN EXPRESSION)反正切7)ATAN2(X,Y)返回坐标(X,Y)的极坐标角度组件6、统计函数1)RANGE(COLNAME)返回指定列的最大值与最小值之差= MAX (COLNAME)-MIN(COLNAME)2)V ARIANCE(COLNAME)返回指定列的样本方差;3)STDEV(COLNAME)返回指定列的标准偏差;7、其他函数1)USER返回当前用户名2)HEX(COLNAME/EXPRESSION)返回指定列或表达式的十六进制值3)LENGTH(COLNAME/EXPRESSION)返回指定字符列或表达式的长度4)TRIM(COLNAME/EXPRESSION)删除指定列或表达式前后的字符5)COLNAME/EXPRESSION || COLNAME/EXPRESSION返回并在一起的字符;二、IDS内部函数1、DBSERVERNAME返回数据库服务器名let tmp_char=DBSERVERNAME2、SITENAME返回数据库服务器名let tmp_char=SITENAME说明:两者功能相同;3、DBINFO(‘SPECIAL_KEYWORD')返回只关键字值例子1:返回数据中每个表的DBSPACE名称select dbinfo('dbspace',partnum),tabname from systableswhere tabid>99 and tabtype='T'(OK)例子2:返回任何表中插入的最后一个SERIAL值select dbinfo('sqlca.sqlerrd1') from systables where tabid = 1例子3:返回最后一个SELECT,INSERT,UPDATE,DELETE或EXECUTE PROCEDURE语句处理的行数;select dbinfo('sqlca.sqlerrd2') from systables where tabid=1;Date Manipulation (日期操作)One of the more difficult concepts in Informix's handling of date and time values concerns the use of the variables in arithmetic or relational expressions. You can add or subtract DA TE and DA TETIME variables from each other. You can add or subtract an INTERV AL to a DATE or DA TETIME. Table 1 shows the results of different types of operations on DA TE and DA TETIME values.Notice that it's always okay to subtract one DA TE or DATETIME value from another, as shown here:CURRENT - "07/01/1950" = INTERV AL (my age)"12/25/2000" – CURRENT = INTERV AL (how long till Xmas?)In such a case, the result is always an INTERV AL variable. It would make no sense to add two DA TE or DATETIME values together. What could such an addition represent?UNITS KeywordWhen working with INTERV AL values, sometimes it is necessary to specify the precision with which you are dealing. For example, suppose you have the following field defined:lead_time INTERV AL DAY to DAYTo add 10 days to the lead time you could use a SQL statement like this:SELECT lead_time + INTERV AL(10) DAY to DAYFROM orders;You could achieve the same results using the UNITS keyword:SELECT lead_time + 10 UNITS DAYFROM orders;Like most other programming languages, SQL often allows you to achieve the same ends with different statements. Sometimes the choice is one of personal style. Other times, one format fits in better with a structured style of code writing than another format does.FunctionsThere are several built-in functions that affect date and time calculations. They can apply to either DA TE or DATETIME values, with some exceptions.TODAYThe TODAY function returns a DA TE data value representing the current date. For example, you could execute a SQL function like this:UPDATE member SET change_date = TODAYWHER member_number = 12345;CURRENTThe CURRENT function is similar to the TODAY function, except it returns a DATETIME value. Without specific qualifiers, the default is YEAR to FRACTION(3). You can change the precision by using the same YEAR to FRACTION qualifiers as you use for DATETIMES. Thus, this would be legal:SELECT * from memberWHERE elapsed_time < CURRENT YEAR to DAYDATEThe DATE function takes as input a non-DA TE value such as CHAR, DATETIME, or INTEGER and returns the corresponding DATE value. For example, the following SQL translates a CHARACTER value to a DATE:SELECT * from memberWHERE enrollment_date > DA TE('01/01/99');DAYThis function returns an integer representing the day of the month. Here's an example:SELECT * from memberWHERE DAY(enrollment_date) > DAY(CURRENT);MONTHThis performs like the DAY function except it returns an integer between 1 and 12 representing the month:SELECT * from memberWHERE enrollment_date > MONTH('01/01/99');WEEKDAYThis returns an integer representing the day of the week, with 0 being Sunday and 6 being Saturday:SELECT * from memberWHERE WEEKDAY(enrollment_date) > WEEKDAY(CURRENT);YEARThis function is like the ones above, only it returns a four-digit integer representing the year.EXTENDThis function allows you to use different precisions in a DATETIME than you have specified in the declaration of the variable. It uses the same FIRST to LAST syntax as the DATETIME variables. This function is used to adjust the precision of a DA TETIME variable to match the precision of an INTERV AL that you are using in a calculation. If the INTERV AL value has fields that are not part of the DATETIME value that you are using in a calculation, use the EXTEND function to adjust the precision of the DA TETIME. EXTEND can either increase or decrease the precision of a DATETIME, depending upon the FIRST and LAST values.Suppose myvariable is declared as DA TETIME YEAR to DAY. If you want to add or subtract an INTERV AL defined as MINUTE, you first have to extend the DATETIME as follows:SELECT EXTEND(myvariable, YEAR to MINUTE) –INTERV AL(5) MINUTE to MINUTEFROM memberThe resulting value will be DATETIME YEAR to MINUTE;MDYThe MDY function converts three-integer values into a DATE format. The first integer is the month and must evaluate to an integer in the range 1–12. The second integer is the day and must evaluate to a number in the range from 1 to however many days are in the particular month (28–31). The third expression is the year and must be a four-digit integer. Thus, the following MDY functions would each be valid:MDY(7,1,1950)returns a DATE of "07/01/50"MDY(MONTH(TODAY), 1, YEAR(TODAY))returns a DATE equal to the first day of the current month in the current yearInformix has extensive capabilities for manipulating dates and times, which can make for long and complex SQL statements. Using the three time-related data types and the time-related functions and keywords, you can accomplish almost any type of manipulation of time data. Unfortunately, getting there may be cryptic and painful. If you regularly do extensive date and time manipulation, you should understand all of the intricacies of these data structures.Have fun!。