声明:本系列文章全部参考自官方教程,由于缺乏中文资料而且本人E文实在太菜,对于E文较好的朋友可以直接通过下面的链接访问官方网站提供的教程,
欢迎大家一起学习讨论。
hhttps://code.kx.com/trac/wiki/QforMortals2/contents
用户名跟密码为anonymous
Q语言跟C#、JAVA还有SQL基本数据类型的比较
Q SQL Java C# boolean boolean Boolean Boolean byte byte Byte Byte short smallint Short Int16 int int Integer Int32 long bigint Long Int64 real real Float Single float float Double Double char char(1) Character Char symbol varchar (String) (String) date date Date
datetime datetime Timestamp !DateTime minute
second
time time Time !TimeSpan enumeration
各种数据类型的信息
type size char type num type notation null value boolean 1 b 1 1b 0b byte 1 x 4 0x26 0x00 short 2 h 5 42h 0Nh int 4 i 6 42 0N long 8 j 7 42j 0Nj real 4 e 8 4.2e 0Ne float 8 f 9 4.2 0n char 1 c 10 "z" " " symbol * s 11 ‘zaphod ` month 4 m 13 2006.07m 0Nm date 4 d 14 2006.07.21 0Nd datetime 4 z 15 2006.07.21T09:13:39 0Nz minute 4 u 17 23:59 0Nu second 4 v 18 23:59:59 0Nv time 4 t 19 09:01:02:042 0Nt enumeration
* `u$v
dictionary
99 `a`b`c!!10 20 30
table
98 ([] c1:ab`c; c2:10 20 30)
下面继续针对各种数据类型的讲解:
1. 整数数据(Integer Data)
整数类型跟其它编程语言的描述基本相同。
int
int占用4个字节的内存空间,存储了一个整型的数字。
short
short 占用两个字节的内存空间,只能存储一个较小的整数,以”h”结尾。
e.g.
q)b:-123h
q)b
-123h
long
long 占用了8个字节的内存空间,可以容纳较大的整数,以”f”结尾。
e.g.
q)c:1234567890j
q)c
1234567890j
2. 浮点数据(Floating Point Data)
支持科学记数法。
float
可以保证至少15位小数的的精度,以”f”结尾。相当于JAVA或C#里面的double
real
可以保证至少6位小数的的精度,以”e”结尾。相当于JAVA或C#里面的float
3. 二进制数据(Binary Data)
boolean
当条件为真是,值为1b, 当条件为假时,值为0b
e.g.
q)1=1
1b
q)1=0
0b
byte
4. 字符数据(Char Data)
char
表示一个字符使用的是引号。
e.g.
q)ch:”q”
q)ch
“q”
还可以使用”\”做为转义字符,这跟C#和JAVA是一样的。
q)ch:"\"" / double-quote
q)ch / console also displays the escape "\""
q)ch:"\\" / back-slash
q)ch:"\n" / newline
q)ch:"\r" / return
q)ch:"\t" / horizontal tab
5. symbol
symbol是由”`”符号开头的一串字符,但symbol并不等同于字符串。
那么如何才能让一个symbol包含空格等特殊符号呢?答案就是通过字符串,下面的例子并说明:
e.g.
q)`$"A symbol with `backtick"
`A symbol with `backtick
6. 时间类型
date
date类型的值的定义格式应该为yyyy.mm.dd,月份跟日期不够两位数需要在前面加0
e.g.
q)d:2008.07.03
q)d
2008.07.03
还可以通过d.year, d.mm, d.dd 获取到年、月跟日期,d.month可以得到month的对象。
time
time 类型的值的定义格式应该为hh:mm:ss.uu,同样需要补0的地方还是要补上
e.g.
q)t:16:30.000
q)t
16:30.000
可以通过t.hh, t.mm, t.ss 获取到小时、分钟跟秒,t.minute 跟 t.second 得取到minute跟second的对象。
datetime
datetime 的格式是由date跟time中间通过“T”隔开的标准格式
e.g.
q)dt:2006.07.04T09:04:59:000
q)dt
2006.07.04T09:04:59:000
Datetime具备了date跟time所有的属性外还可以通过dt.date跟dt.time得到date跟time的对象。
month
month 的格式为yyyy.mm,而且需要在末尾追回一个字符“m”
e.g.
q) mon:2006.07m
q)mon
2006.07m
minute
minute 的格式为hh:mm
second
second 的格式为 hh:mm:ss
7. 无穷大 跟 非数字 类型(Infinities and NaN)
下表列出了各种类型的无穷大的表示法:
Token Value 0w Positive float infinity -0w Negative float infinity 0W Positive int infinity -0W Negative int infinity 0Wh Positive short infinity -0Wh Negative short infinity 0Wj Positive long infinity -0Wj Negative long infinity 0Wd Positive date infinity -0Wd Negative date infinity 0Wt Positive time infinity -0Wt Negative time infinity 0Wz Positive datetime infinity -0Wz Negative datetime infinity 0n NaN, or not a number
8. 空值类型(Null Values)
下表列出了各种类型的空值表示法:
type null boolean 0b byte 0x00 short 0Nh int 0N long 0Nj real 0Ne float 0n char " " sym ` month 0Nm date 0Nd datetime 0Nz minute 0Nu second 0Nv time 0Nt