I) 字段類型轉化 MySQL 的CAST()和CONVERT()函數可用來獲取一個類型的,并產生另一個類型的。兩者具體的語法如下: CAST(value as type);CONVERT(value, type); 就是CAST(xxx AS 類型), CONVERT(xxx,類型)。 可以轉換的類型是有限制的。這個類型可以是以下其
I) 字段類型轉化MySQL 的CAST()和CONVERT()函數可用來獲取一個類型的值,并產生另一個類型的值。兩者具體的語法如下:
CAST(value as type); CONVERT(value, type);
就是CAST(xxx AS 類型), CONVERT(xxx,類型)。
可以轉換的類型是有限制的。這個類型可以是以下值其中的一個:
EEG: mysql> SELECT CAST('3.35' AS signed); +------------------------+ | CAST('3.35' AS signed) | +------------------------+ | 3 | +------------------------+ 1 row in setmysql> SELECT CONVERT('23.001',SIGNED); +----------------------+ | CONVERT('23',SIGNED) | +----------------------+ | 23 | +----------------------+ 1 row in set
轉化為float:
SELECT 23+0.000
輸出:23.000
以下為項目中應用的SQL語句實例:
/*SQLServerDB query methodconvert to float
return this.getSession().createQuery(" FROM "+this.clazz.getName()+" this WHERE this.areaCode IN(:areaCode) and " +
"(convert(float,this.cpuUsedPer) > '"+Float.valueOf(cpuValue)+"' or convert(float,this.memoryUsedPer) > '"+Float.valueOf(memValue)+"' or
convert(float,this.diskLaveSize) < '"+Float.valueOf(diskValue)+ "' or this.appServerState=1 or this.dbServerState=1 or this.mgrServerState=1 or
convert(float,DateDiff(mi,this.lastActiveTime,getDate()))> '"+Float.parseFloat(timeOutValue)+"')") .setParameterList("areaCode", areaCode) .list();
*/
//@author:chenjun /20140515 MysqlDB
query method with convert DECIMAL
return this.getSession().createQuery(" FROM "+this.clazz.getName()+" this WHERE this.areaCode IN(:areaCode) and " +
"(this.cpuUsedPer+0.00) > '"+Float.valueOf(cpuValue)+"' or (this.memoryUsedPer+0.00) > '"+Float.valueOf(memValue)+"' or (this.diskLaveSize+0.00) <
'"+Float.valueOf(diskValue)+ "' or this.appServerState=1 or this.mgrServerState=1 or convert(TIMESTAMPDIFF(MINUTE,this.lastActiveTime,NOW()),DECIMAL)>
'"+Float.parseFloat(timeOutValue)+"')").setParameterList("areaCode", areaCode) .list();
II )時間類型相關處理
SQLServer
DateDiff(mi,this.lastActiveTime,getDate()) 返回lastActiveTime Date 時間與當前系統時間的時間差,單位為分鐘
Mysql
DATEDIFF(expr,expr2) DATEDIFF() 返回起始時間 expr和結束時間expr2之間的天數expr > expr2 ,返回值 > 0 ; expr = expr2 ,返回值= 0 ;expr < expr2 ,返回值< 0 ;
TIMEDIFF(expr,expr2) TIMEDIFF() 返回起始時間 expr 和結束時間expr2 之間的時間
expr > expr2 ,返回值 > 0 ; expr = expr2 ,返回值= 0 ;expr < expr2 ,返回值< 0 ;
expr > expr2 ,返回值 < 0 ; expr = expr2 ,返回值= 0 ;expr > expr2 ,返回值< 0 ;(參數與DATEDIFF、TIMEDIFF相反)
測試值:expr=‘2015-05-15 17:00:10’ ;NOW() = ‘2015-05-15 17:40:10’,
mysql>SELECT TIMESTAMPDIFF(MONTH,'2003-02-01','2003-05-01');
-> 3 mysql>SELECT TIMESTAMPDIFF(YEAR,'2002-05-01','2001-01-01');
-> -1 mysql>SELECT TIMESTAMPDIFF(MINUTE,'2003-02-01','2003-05-01 12:05:55');
-> 128885
SHOW TABLE STATUS,http://dev.mysql.com/doc/refman/5.1/zh/sql-syntax.html#show-table-status
日期和時間類型概述文檔
http://dev.mysql.com/doc/refman/5.1/zh/column-types.html#date-and-time-type-overview
JOIN語法文檔,
http://dev.mysql.com/doc/refman/5.1/zh/sql-syntax.html#join
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com