我需要显示一个关于日期列的值,只需将月份值传递给Jan为01,将02传递为2月。我尝试使用hibernate查询,但它显示错误。
@Query("select to_char(calendarDate,'mm'),dayType from Calendar
where calendarDate like '%?1%'")
List<String>findDayType(int callist);
我正在
上述查询的模型未在hibernate中映射
错误
答案 0 :(得分:0)
将DATE用作类型的重点是数据库可以有效地查询数据。这与将数字存储为INT而不是VARCHAR的原因相同 - 因此引擎可以做出明智的决策。如果在日期中使用LIKE运算符,则会失去选择正确数据类型的好处。
使用MONTH允许SQL获取它知道遵守DATE数据格式的列的月份部分。当你使用LIKE时,它正在进行逐个字符的模式匹配,这样做的成本更高,速度也更慢。
如果LIKE足够,则MONTH()将不存在。对于DATE查询,任何内置函数始终都是LIKE的选择。
答案 1 :(得分:0)
当月
SELECT DATENAME(mm, GETDATE()) 'English Month Name'
再过几个月
DECLARE @Mth smallint
SET @Mth = 11
SELECT DateName(mm,DATEADD(mm,@Mth,-1)) as [MonthName]
答案 2 :(得分:0)
这是正确的查询,现在它正在运行:
@Query("select to_char(calendarDate,'mm'),dayType from Calendar where calendarDate =?1")
List<String>findDayType(int callist);