hql中常用函數CAST 带来的日期转换问题[转]

以前都是连接的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) )

原文地址: http://yaojialing.iteye.com/blog/521433


下边是对应的cast类型


{[Ljava.lang.Byte;=org.hibernate.type.WrapperBinaryType@2d8535
java.lang.Object=org.hibernate.type.AnyType@848be7
java.lang.Character=org.hibernate.type.CharacterType@1fd11f0
time=org.hibernate.type.TimeType@1a4acc9
clob=org.hibernate.type.ClobType@4c0090
serializable=org.hibernate.type.SerializableType@1b911fe
date=org.hibernate.type.DateType@14c4f11
boolean=org.hibernate.type.BooleanType@1b0c0b8
calendar=org.hibernate.type.CalendarType@db1a12
locale=org.hibernate.type.LocaleType@8cb608
object=org.hibernate.type.AnyType@848be7
char=org.hibernate.type.CharacterType@1fd11f0
string=org.hibernate.type.StringType@11d5c7d
java.util.GregorianCalendar=org.hibernate.type.CalendarType@db1a12
imm_dbtimestamp=org.hibernate.type.AdaptedImmutableType@2e74d
float=org.hibernate.type.FloatType@9f7456
timestamp=org.hibernate.type.TimestampType@c0468e
Character[]=org.hibernate.type.CharacterArrayType@8ef6f1
Byte[]=org.hibernate.type.WrapperBinaryType@2d8535
byte[]=org.hibernate.type.BinaryType@1f678b6
integer=org.hibernate.type.IntegerType@6897b6
class=org.hibernate.type.ClassType@6f344e
java.util.Date=org.hibernate.type.TimestampType@c0468e
java.sql.Date=org.hibernate.type.DateType@14c4f11
imm_binary=org.hibernate.type.AdaptedImmutableType@d32793
long=org.hibernate.type.LongType@cb5695
java.sql.Timestamp=org.hibernate.type.TimestampType@c0468e
char[]=org.hibernate.type.CharArrayType@1a15add
java.lang.Double=org.hibernate.type.DoubleType@547c9f
text=org.hibernate.type.TextType@c1d807
imm_calendar=org.hibernate.type.AdaptedImmutableType@4dbd2f
java.lang.Integer=org.hibernate.type.IntegerType@6897b6
timezone=org.hibernate.type.TimeZoneType@1bf9450
imm_date=org.hibernate.type.AdaptedImmutableType@a21e6b
short=org.hibernate.type.ShortType@1693a93
[Ljava.lang.Character;=org.hibernate.type.CharacterArrayType@8ef6f1
[B=org.hibernate.type.BinaryType@1f678b6
big_decimal=org.hibernate.type.BigDecimalType@17b22ed
byte=org.hibernate.type.ByteType@131f86a
java.util.TimeZone=org.hibernate.type.TimeZoneType@1bf9450
currency=org.hibernate.type.CurrencyType@1ac23df
big_integer=org.hibernate.type.BigIntegerType@670e89
[C=org.hibernate.type.CharArrayType@1a15add
character=org.hibernate.type.CharacterType@1fd11f0
java.math.BigInteger=org.hibernate.type.BigIntegerType@670e89
imm_calendar_date=org.hibernate.type.AdaptedImmutableType@1eb635a
double=org.hibernate.type.DoubleType@547c9f
java.sql.Time=org.hibernate.type.TimeType@1a4acc9
java.io.Serializable=org.hibernate.type.SerializableType@1b911fe
java.lang.Byte=org.hibernate.type.ByteType@131f86a
java.util.Calendar=org.hibernate.type.CalendarType@db1a12
java.lang.Float=org.hibernate.type.FloatType@9f7456
java.lang.Boolean=org.hibernate.type.BooleanType@1b0c0b8
java.lang.String=org.hibernate.type.StringType@11d5c7d
blob=org.hibernate.type.BlobType@c7b2e6
java.lang.Short=org.hibernate.type.ShortType@1693a93
java.lang.Class=org.hibernate.type.ClassType@6f344e
imm_serializable=org.hibernate.type.AdaptedImmutableType@b255ef
java.math.BigDecimal=org.hibernate.type.BigDecimalType@17b22ed
int=org.hibernate.type.IntegerType@6897b6
java.lang.Long=org.hibernate.type.LongType@cb5695
java.sql.Clob=org.hibernate.type.ClobType@4c0090
java.util.Currency=org.hibernate.type.CurrencyType@1ac23df
dbtimestamp=org.hibernate.type.DbTimestampType@27f088
imm_time=org.hibernate.type.AdaptedImmutableType@208657
calendar_date=org.hibernate.type.CalendarDateType@153cc48
java.util.Locale=org.hibernate.type.LocaleType@8cb608
true_false=org.hibernate.type.TrueFalseType@88b5b5
java.sql.Blob=org.hibernate.type.BlobType@c7b2e6
binary=org.hibernate.type.BinaryType@1f678b6
yes_no=org.hibernate.type.YesNoType@1518fc9
imm_timestamp=org.hibernate.type.AdaptedImmutableType@1b6f492}

(FROM :http://yangkun0318.blog.163.com/blog/static/1318094332011524512212/)
展开阅读全文

没有更多推荐了,返回首页