year(), month(), concat() 是 mysql 特有的函數(shù),其他數(shù)據(jù)庫(kù)也有對(duì)應(yīng)的函數(shù),而 hibernate 存在的意義就是屏蔽這些數(shù)據(jù)庫(kù)特有的東西,這樣的話:

成都創(chuàng)新互聯(lián)公司服務(wù)項(xiàng)目包括槐蔭網(wǎng)站建設(shè)、槐蔭網(wǎng)站制作、槐蔭網(wǎng)頁(yè)制作以及槐蔭網(wǎng)絡(luò)營(yíng)銷策劃等。多年來(lái),我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,槐蔭網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到槐蔭省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
如果數(shù)據(jù)庫(kù)的 datetime/date 之類的字段并沒(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ù)
每種日期和時(shí)間類型都有一個(gè)有效范圍。如果插入的值超出相應(yīng)范圍,系統(tǒng)會(huì)報(bào)錯(cuò)并將相應(yīng)的零值插入到數(shù)據(jù)庫(kù)中,各個(gè)類型的零值請(qǐng)看上表。
YEAR類型用4位數(shù)表示年份。范圍從1901~2155,插入超范圍的值時(shí)系統(tǒng)報(bào)錯(cuò)并插入0000。
DATE類型用YYYY-MM-DD形式顯示日期。范圍從1000-01-01~9999-12-31插入超范圍的值時(shí)系統(tǒng)報(bào)錯(cuò)并插入零值。此類型除了可接受YYYY-MM-DD和YYYYMMDD格式的輸入外,還可以識(shí)別其它一些不嚴(yán)格的語(yǔ)法格式,例如YYYY/MM/DD、YYYY.MM.DD等其他標(biāo)點(diǎn)符號(hào)作為間隔的形式日期值的輸入。
TIME類型用HH:MM:SS形式顯示時(shí)間。其中MM和SS的取值范圍是0~59,HH的取值范圍比較特別其取值范圍是0~838,一般來(lái)講小時(shí)數(shù)的范圍是0~23,但是為了滿足特殊情況的需要,MySQL擴(kuò)大了TIME類型的范圍,而且可以接受負(fù)數(shù)。TIME類型支持D HH:MM:S格式的時(shí)間表達(dá)字串,D表示天數(shù),取值范圍0~34。例如,輸入30 21:15:26,系統(tǒng)會(huì)將小時(shí)部分按30*24+21轉(zhuǎn)換為 741:15:26。除了標(biāo)準(zhǔn)的輸入方式HH:MM:SS外,此類型還可以接受一些非標(biāo)準(zhǔn)的輸入方式,例如,輸入12,系統(tǒng)會(huì)轉(zhuǎn)換為00:00:12、輸入1212,系統(tǒng)會(huì)轉(zhuǎn)換為
00:12:12、輸入121212,系統(tǒng)會(huì)轉(zhuǎn)換為12:12:12等。
DATETIME類型用YYYY-MM-SS HH:MM:SS形式顯示日期與時(shí)間。范圍從1000-01-01 00:00:00~9999-12-31 23:59:59 插入超范圍的值時(shí),系統(tǒng)報(bào)錯(cuò)并插入零值(0000-00-00 00:00:00)。此類型除了可接受YYYY-MM-SS HH:MM:SS格式的輸入外,還可以識(shí)別YYYYMMSSHHMMSS形式的輸入值。例如,輸入20170117174856,系統(tǒng)會(huì)轉(zhuǎn)換為
2017-01-17 17:48:56。
TIMESTAMP類型情況與DATETIME類型接近,但是它的取值范圍要比DATETIME類型窄很多,范圍從19700101080001~20380119111407(1970-01-01 08:00:01~2038-01-19 11:14:07)。**另外,TIMESTAMP類型還有一個(gè)特別之處,那就是它的值的時(shí)間部分是根據(jù)時(shí)區(qū)來(lái)顯示的,例如在東八區(qū)插入的TIMESTAMP類型值2017-01-16 18:04:25,在東七區(qū)的時(shí)間部分會(huì)顯示17:04:25,而在東九區(qū)則變?yōu)?9:04:25,對(duì)于這一點(diǎn)我們要特別留意。**
我們?cè)谶x擇日期與時(shí)間數(shù)據(jù)類型時(shí),請(qǐng)根據(jù)實(shí)際需求選擇相應(yīng)的類型,一般應(yīng)選擇剛好夠用最好,這樣可節(jié)省系統(tǒng)資源。例如只需要知道日期的選擇DATE類型、需要同時(shí)知道日期與時(shí)間的就選擇DATETIME類型、僅僅需要記錄時(shí)間的則選擇TIME類型等。
MySQL數(shù)據(jù)庫(kù)中year()函數(shù)是求某個(gè)特定日期中的年份,代碼如下:
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;
這個(gè)字節(jié)是表示年份的后面兩位數(shù)值,一個(gè)字節(jié)就夠了,表示的年份是1900+字節(jié)的值.
還是不明白,那前面兩位數(shù)字呢?
那是如何顯示而已,比如你知道這個(gè)字節(jié)的值為55,就是表示1955年,就顯示為1955就可以啦。
當(dāng)前標(biāo)題:mysqlyear怎么 mysql dayofyear
網(wǎng)頁(yè)路徑:http://chinadenli.net/article20/higjjo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、云服務(wù)器、靜態(tài)網(wǎng)站、虛擬主機(jī)、做網(wǎng)站、全網(wǎng)營(yíng)銷推廣
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容