以前都是连接的ORACLE,MYSQL数据库,写程序一直也没出现过什么问题,就在近期用SQL SERVER出了点问题。
用hibernate操作sqlserver数据库,数据库表中有个日期字段是字符型,当查询一定时间范围内的数据时需要转换日期,这里需要注意了hibernate CAST函数支持转换类型在SQL SERVER中不一定行。
如:and cast(a.enterdate as date) >= cast('2009-01-01' as date) 这条语句转换的类型是date,但它在SQL SERVER中却不能执行,因为要把date类型改成datetime型。
CAST函数的用法
CAST 函数 [数据类型转换]
功能:
返回转换为提供的数据类型的表达式的值。
语法:
CAST(expression AS data type)
参数:
expression 要转换的表达式
data type 目标数据类型
用法:
如果未指定字符串类型的长度,数据库服务器将选择适当的长度。如果没有为十进制转换指定精度和小数位数,则数据库服务器将选择适当的值。
示例
下面的函数确保字符串被用作日期:
SELECT CAST( '2000-10-31' AS DATE )
计算表达式 1 + 2
的值,并将结果转换为单字符字符串。
SELECT CAST( 1 + 2 AS CHAR )
可以使用 CAST 函数缩短字符串:
SELECT CAST( 'Surname' AS CHAR(5) )