MySQL數(shù)據(jù)庫(kù)中year()函數(shù)是求某個(gè)特定日期中的年份,代碼如下:
站在用戶的角度思考問(wèn)題,與客戶深入溝通,找到南溪網(wǎng)站設(shè)計(jì)與南溪網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類(lèi)型包括:網(wǎng)站制作、網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、國(guó)際域名空間、雅安服務(wù)器托管、企業(yè)郵箱。業(yè)務(wù)覆蓋南溪地區(qū)。
select '2015-08-11' as date,year('2015-08-11') as year;
確定一個(gè)日期是一年中的第幾個(gè)季度,可以用QUARTER()函數(shù)實(shí)現(xiàn),代碼如下:
SELECT '2015-08-11' AS DATE,QUARTER('2015-08-11') AS QUARTER;
返回一個(gè)日期是一年中的月份,利用month()函數(shù)實(shí)現(xiàn),代碼如下:
SELECT '2015-08-11' AS DATE,MONTH('2015-08-11') AS MONTH;
獲取一個(gè)確定日期是一個(gè)月份中的多少號(hào),可以用day()函數(shù)求得,具體實(shí)現(xiàn)代碼如下:
SELECT '2015-08-11' AS DATE,DAY('2015-08-11') AS DAY;
有時(shí)日期中帶有時(shí)間,而如何獲取小時(shí)數(shù),這可以利用自帶的函數(shù)hour()實(shí)現(xiàn),代碼如下:
SELECT '2015-08-11 12:20:45' AS DATE,HOUR('2015-08-11 12:20:45') AS HOUR;
求取日期時(shí)間中的分鐘數(shù),可以利用MINUTE()函數(shù)實(shí)現(xiàn),代碼如下:
SELECT '2015-08-11 12:20:45' AS DATE,MINUTE('2015-08-11 12:20:45') AS MINUTE;
最后,獲取時(shí)間中的秒數(shù),利用SECOND()函數(shù)實(shí)現(xiàn),代碼如下:
SELECT '2015-08-11 12:20:45' AS DATE,SECOND('2015-08-11 12:20:45') AS SECOND;
一般的數(shù)據(jù)庫(kù)的設(shè)計(jì)只保存出生日期,而查詢的時(shí)候年齡需要計(jì)算..(如果保存年齡的話是不是每年都要更新?)
廢話不說(shuō)了.針對(duì)你的具體問(wèn)題..年齡是怎么計(jì)算出來(lái)的呢?就是用當(dāng)前年份減去出生年份.那么.出生年份就是當(dāng)前年份減年齡:datename(yy,getdate())-年齡.
于是你就可以用:
SELECT
學(xué)號(hào),datename(yy,getdate())-年齡
出生年份
FROM
表.
僅供參考.具體字段請(qǐng)參照你所查詢的表.
year(), month(), concat() 是 mysql 特有的函數(shù),其他數(shù)據(jù)庫(kù)也有對(duì)應(yīng)的函數(shù),而 hibernate 存在的意義就是屏蔽這些數(shù)據(jù)庫(kù)特有的東西,這樣的話:
如果數(shù)據(jù)庫(kù)的 datetime/date 之類(lèi)的字段并沒(méi)有和 Java 的 Date 或 Calender 屬性進(jìn)行映射的話,無(wú)論你使用 HQL 還是Criteria 都無(wú)法實(shí)現(xiàn)對(duì)日期的操作,因?yàn)?HQL 和 Criteria 都是基于對(duì)象的查詢方式。
基于對(duì)象的查詢,如下,先做映射
@Entity
@Table(name="PREFERRED_CUSTOMER")
public PCustomer {
@Column(name = "EXPIRATION_DATE")
@Temporal(TemporalType.DATE)
protected java.util.Date expirationDate; // only day, month, year
}
可以使用 HQL 這么查詢:
ListPCustomer list = session
.createQuery("from PCustomer pc where pc.expirationDate = :edate")
.setParameter("edate", new java.util.Date(), TemporalType.DATE)
.list();
hibernate 屏蔽了數(shù)據(jù)庫(kù)特有的東西,是為了方便移植,但有的老項(xiàng)目較多地使用了數(shù)據(jù)庫(kù)特有的東西,如MSSQL 的 T-SQL,這時(shí),就需要使用 hibernate 對(duì) SQL 的原生支持,Session 提供了 createSQLQuery() 這樣的方法,此時(shí)的 hibernate 就相當(dāng)于一個(gè)簡(jiǎn)單的 mapper,只提供對(duì)象關(guān)系映射,當(dāng)然,一旦你在代碼中使用了對(duì) SQL 的原生支持,移植性就不好了。
此種方式可以使用你所說(shuō)的 MySQL 函數(shù)
下面以比較流行的mysql圖形化管理工具Navicat為例,其他工具或者在命令行中以及編程語(yǔ)言中操作時(shí)的執(zhí)行的sql語(yǔ)句是一樣的。
1、假設(shè)在數(shù)據(jù)庫(kù)中有一個(gè)名為testtest的表格,表格內(nèi)容如下圖所示,表中有三條記錄是9月份的
2、打開(kāi)一個(gè)查詢窗口,輸入查詢語(yǔ)句select * from?testtest?where month(date)='9';,該語(yǔ)句表示查詢testtest表格中9月份的記錄
3、點(diǎn)擊“運(yùn)行”執(zhí)行該sql語(yǔ)句,在下方可以看到已經(jīng)查詢到了9月份的三條記錄
4、如需按年查詢可輸入select * from?testtest where year(date)='2017';,2017代表需要查詢的年份。如下圖所示只查詢到了一條記錄是2017年的