方法一:select date_format(日期字段,'%Y-%m') as '日期' from 表
創(chuàng)新互聯(lián)建站是一家集網(wǎng)站建設(shè),深澤企業(yè)網(wǎng)站建設(shè),深澤品牌網(wǎng)站建設(shè),網(wǎng)站定制,深澤網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,深澤網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
方法二:mysql有日期函數(shù)?date_format
SELECT date_format(signDate,'%Y-%m') AS MY_YM FROM tablename WHERE 1;
方法三:對(duì)這個(gè)字段使用函數(shù)left或者substring
例如:
select left(signDate,7) as date from tablename 或者
select substring(signDate,0,7) as date from tablename
擴(kuò)展資料:
MySQL 截取部分日期
使用 DATE_FORMAT(get_date, '%Y-%m-%d') 函數(shù)截取。
其中:get_date 是需要截取的字段名;'%Y-%m-%d' 是截取后的日期格式。
select date_format('1997-10-04 22:23:00','%y %M %b %D %W %a %Y-%m-%d %H:%i:%s %r %T');
結(jié)果:97 October Oct 4th Saturday Sat 1997-10-04 22:23:00 10:23:00 PM 22:23:00
get_date = "2006-12-07"
SELECT count(*) FROM t_get_video_temp Where DATE_FORMAT(get_date, '%Y-%m-%d')='2006-12-07';
SELECT count(*) FROM t_get_video_temp Where get_date like '2006%-07%';
以每24小時(shí)作為一份時(shí)間(而非自然日),根據(jù)用戶的配置有兩種工作模式:帶狀模式中,用戶僅定義開始日期時(shí),從開始日期(含)開始,每份時(shí)間1個(gè)分片地?zé)o限增加下去;環(huán)狀模式中,用戶定義了開始日期和結(jié)束日期時(shí),以結(jié)束日期(含)和開始日期(含)之間的時(shí)間份數(shù)作為分片總數(shù)(分片數(shù)量固定),以類似取模的方式路由到這些分片里。
1. DBLE 啟動(dòng)時(shí),讀取用戶在 rule.xml 配置的 sBeginDate 來確定起始時(shí)間
2. 讀取用戶在 rule.xml 配置的 sPartionDay 來確定每個(gè) MySQL 分片承載多少天內(nèi)的數(shù)據(jù)
3. 讀取用戶在 rule.xml 配置的 dateFormat 來確定分片索引的日期格式
4. 在 DBLE 的運(yùn)行過程中,用戶訪問使用這個(gè)算法的表時(shí),WHERE 子句中的分片索引值(字符串),會(huì)被提取出來嘗試轉(zhuǎn)換成 Java 內(nèi)部的時(shí)間類型
5. 然后求分片索引值與起始時(shí)間的差,除以 MySQL 分片承載的天數(shù),確定所屬分片
1. DBLE 啟動(dòng)時(shí),讀取用戶在 rule.xml 配置的起始時(shí)間 sBeginDate、終止時(shí)間 sEndDate 和每個(gè) MySQL 分片承載多少天數(shù)據(jù) sPartionDay
2. 根據(jù)用戶設(shè)置,建立起以 sBeginDate 開始,每 sPartionDay 天一個(gè)分片,直到 sEndDate 為止的一個(gè)環(huán),把分片串聯(lián)串聯(lián)起來
3. 讀取用戶在 rule.xml 配置的 defaultNode
4. 在 DBLE 的運(yùn)行過程中,用戶訪問使用這個(gè)算法的表時(shí),WHERE 子句中的分片索引值(字符串),會(huì)被提取出來嘗試轉(zhuǎn)換成 Java 內(nèi)部的日期類型
5. 然后求分片索引值與起始日期的差:如果分片索引值不早于 sBeginDate(哪怕晚于 sEndDate),就以 MySQL 分片承載的天數(shù)為模數(shù),對(duì)分片索引值求模得到所屬分片;如果分片索引值早于 sBeginDate,就會(huì)被放到 defaultNode 分片上
與MyCat的類似分片算法對(duì)比
中間件
DBLE
MyCat
分片算法種類 date 分區(qū)算法 按日期(天)分片
兩種中間件的取模范圍分片算法使用上無差別
開發(fā)注意點(diǎn)
【分片索引】1. 必須是字符串,而且 java.text.SimpleDateFormat 能基于用戶指定的 dateFormat 來轉(zhuǎn)換成 java.util.Date
【分片索引】2. 提供帶狀模式和環(huán)狀模式兩種模式
【分片索引】3. 帶狀模式以 sBeginDate(含)起,以 86400000 毫秒(24 小時(shí)整)為一份,每 sPartionDay 份為一個(gè)分片,理論上分片數(shù)量可以無限增長(zhǎng),但是出現(xiàn) sBeginDate 之前的數(shù)據(jù)而且沒有設(shè)定 defaultNode 的話,會(huì)路由失?。ㄈ绻?defaultNode,則路由至 defaultNode)
【分片索引】4. 環(huán)狀模式以 86400000 毫秒(24 小時(shí)整)為一份,每 sPartionDay 份為一個(gè)分片,以 sBeginDate(含)到 sEndDate(含)的時(shí)間長(zhǎng)度除以單個(gè)分片長(zhǎng)度得到恒定的分片數(shù)量,但是出現(xiàn) sBeginDate 之前的數(shù)據(jù)而且沒有設(shè)定 defaultNode 的話,會(huì)路由失敗(如果有 defaultNode,則路由至 defaultNode)
【分片索引】5. 無論哪種模式,分片索引字段的格式化字符串 dateFormat 由用戶指定
【分片索引】6. 無論哪種模式,劃分不是以日歷時(shí)間為準(zhǔn),無法對(duì)應(yīng)自然月和自然年,且會(huì)受閏秒問題影響
運(yùn)維注意點(diǎn)
【擴(kuò)容】1. 帶狀模式中,隨著 sBeginDate 之后的數(shù)據(jù)出現(xiàn),分片數(shù)量的增加無需再平衡
【擴(kuò)容】2. 帶狀模式?jīng)]有自動(dòng)增添分片的能力,需要運(yùn)維手工提前增加分片;如果路由策略計(jì)算出的分片并不存在時(shí),會(huì)導(dǎo)致失敗
【擴(kuò)容】3. 環(huán)狀模式中,如果新舊 [sBeginDate,sEndDate] 之間有重疊,需要進(jìn)行部分?jǐn)?shù)據(jù)遷移;如果新舊 [sBeginDate,sEndDate] 之間沒有重疊,需要數(shù)據(jù)再平衡
配置注意點(diǎn)
【配置項(xiàng)】1. 在 rule.xml 中,可配置項(xiàng)為 propertyname="sBeginDate" 、 propertyname="sPartionDay" 、 propertyname="dateFormat" 、 propertyname="sEndDate" 和 propertyname="defaultNode"
【配置項(xiàng)】2.在 rule.xml 中配置 propertyname="dateFormat",符合 java.text.SimpleDateFormat 規(guī)范的字符串,用于告知 DBLE 如何解析sBeginDate和sEndDate
【配置項(xiàng)】3.在 rule.xml 中配置 propertyname="sBeginDate",必須是符合 dateFormat 的日期字符串
【配置項(xiàng)】4.在 rule.xml 中配置 propertyname="sEndDate",必須是符合 dateFormat 的日期字符串;配置了該項(xiàng)使用的是環(huán)狀模式,若沒有配置該項(xiàng)則使用的是帶狀模式
【配置項(xiàng)】5.在 rule.xml 中配置 propertyname="sPartionDay",非負(fù)整數(shù),該分片策略以 86400000 毫秒(24 小時(shí)整)作為一份,而 sPartionDay 告訴 DBLE 把每多少份放在同一個(gè)分片
【配置項(xiàng)】6.在 rule.xml 中配置 propertyname="defaultNode" 標(biāo)簽,非必須配置項(xiàng),不配置該項(xiàng)的話,用戶的分片索引值沒落在 mapFile 定義
select year(curdate()),month(curdate()),day(curdate());
select weekofyear(curdate());
有點(diǎn)細(xì)微的差別,weekofyear(date)相當(dāng)于week(date,3).
下面是week(date,Mode),取值的說明,根據(jù)自己的實(shí)際情況取自己想要的值
Mode 工作日 范圍 Week 1 為第一周 ...
0 周日 0-53 本年度中有一個(gè)周日
1 周一 0-53 本年度中有3天以上
2 周日 1-53 本年度中有一個(gè)周日
3 周一 1-53 本年度中有3天以上
4 周日 0-53 本年度中有3天以上
5 周一 0-53 本年度中有一個(gè)周一
6 周日 1-53 本年度中有3天以上
7 周一 1-53 本年度中有一個(gè)周一
select date_format(now(),'%Y')
select date_format(now(),'%m')
select date_format(now(),'%e')
select date_format(now(),'%U')
select year(curdate()),month(curdate()),dayofyear(curdate()),weekofyear(curdate());
◆ TIME(expr)
提取一個(gè)時(shí)間或日期時(shí)間表達(dá)式的時(shí)間部分,并將其以字符串形式返回。
mysql SELECT TIME('2003-12-31 01:02:03');
- '01:02:03'
mysql SELECT TIME('2003-12-31 01:02:03.000123');
- '01:02:03.000123'
◆ TIMEDIFF(expr,expr2)
TIMEDIFF() 返回起始時(shí)間 expr 和結(jié)束時(shí)間expr2 之間的時(shí)間。 expr 和expr2 為時(shí)間或 date-and-time 表達(dá)式,兩個(gè)的類型必須一樣。
mysql SELECT TIMEDIFF('2000:01:01 00:00:00',
- '2000:01:01 00:00:00.000001');
- '-00:00:00.000001'
mysql SELECT TIMEDIFF('1997-12-31 23:59:59.000001',
- '1997-12-30 01:01:01.000002');
- '46:58:57.999999'
◆ TIMESTAMP(expr) , TIMESTAMP(expr,expr2)
對(duì)于一個(gè)單參數(shù),該函數(shù)將日期或日期時(shí)間表達(dá)式 expr 作為日期時(shí)間值返回.對(duì)于兩個(gè)參數(shù), 它將時(shí)間表達(dá)式 expr2 添加到日期或日期時(shí)間表達(dá)式 expr 中,將theresult作為日期時(shí)間值返回。
mysql SELECT TIMESTAMP('2003-12-31');
- '2003-12-31 00:00:00'
mysql SELECT TIMESTAMP('2003-12-31 12:00:00','12:00:00');
- '2004-01-01 00:00:00'
◆ TIMESTAMPADD(interval,int_expr,datetime_expr)
將整型表達(dá)式int_expr 添加到日期或日期時(shí)間表達(dá)式 datetime_expr中。 int_expr 的單位被時(shí)間間隔參數(shù)給定,該參數(shù)必須是以下值的其中一個(gè): FRAC_SECOND、SECOND、 MINUTE、 HOUR、 DAY、 WEEK、 MONTH、 QUARTER或 YEAR。
可使用所顯示的關(guān)鍵詞指定Interval值,或使用SQL_TSI_前綴。例如, DAY或SQL_TSI_DAY 都是正確的。
mysql SELECT TIMESTAMPADD(MINUTE,1,'2003-01-02');
- '2003-01-02 00:01:00'
mysql SELECT TIMESTAMPADD(WEEK,1,'2003-01-02');
- '2003-01-09'
◆ TIMESTAMPDIFF(interval,datetime_expr1,datetime_expr2)
返回日期或日期時(shí)間表達(dá)式datetime_expr1 和datetime_expr2the 之間的整數(shù)差。其結(jié)果的單位由interval 參數(shù)給出。interval 的法定值同TIMESTAMPADD()函數(shù)說明中所列出的相同。
mysql SELECT TIMESTAMPDIFF(MONTH,'2003-02-01','2003-05-01');
- 3
mysql SELECT TIMESTAMPDIFF(YEAR,'2002-05-01','2001-01-01');
- -1
◆ TIME_FORMAT(time,format)
其使用和 DATE_FORMAT()函數(shù)相同, 然而format 字符串可能僅會(huì)包含處理小時(shí)、分鐘和秒的格式說明符。其它說明符產(chǎn)生一個(gè)NULL值或0。
若time value包含一個(gè)大于23的小時(shí)部分,則 %H 和 %k 小時(shí)格式說明符會(huì)產(chǎn)生一個(gè)大于0..23的通常范圍的值。另一個(gè)小時(shí)格式說明符產(chǎn)生小時(shí)值模數(shù)12。
mysql SELECT TIME_FORMAT('100:00:00', '%H %k %h %I %l');
- '100 100 04 04 4'
◆ TIME_TO_SEC(time)
返回已轉(zhuǎn)化為秒的time參數(shù)。
mysql SELECT TIME_TO_SEC('22:23:00');
- 80580
mysql SELECT TIME_TO_SEC('00:39:38');
- 2378
◆ TO_DAYS(date)
給定一個(gè)日期date, 返回一個(gè)天數(shù) (從年份0開始的天數(shù) )。
mysql SELECT TO_DAYS(950501);
- 728779
mysql SELECT TO_DAYS('1997-10-07');
- 729669
TO_DAYS() 不用于陽歷出現(xiàn)(1582)前的值,原因是當(dāng)日歷改變時(shí),遺失的日期不會(huì)被考慮在內(nèi)。
請(qǐng)記住, MySQL使用“日期和時(shí)間類型”中的規(guī)則將日期中的二位數(shù)年份值轉(zhuǎn)化為四位。例如, '1997-10-07'和 '97-10-07' 被視為同樣的日期:
mysql SELECT TO_DAYS('1997-10-07'), TO_DAYS('97-10-07');
- 729669, 729669
對(duì)于1582 年之前的日期(或許在其它地區(qū)為下一年 ), 該函數(shù)的結(jié)果實(shí)不可靠的。
◆ UNIX_TIMESTAMP(), UNIX_TIMESTAMP(date)
若無參數(shù)調(diào)用,則返回一個(gè)Unix timestamp ('1970-01-01 00:00:00' GMT 之后的秒數(shù)) 作為無符號(hào)整數(shù)。若用date 來調(diào)用UNIX_TIMESTAMP(),它會(huì)將參數(shù)值以'1970-01-01 00:00:00' GMT后的秒數(shù)的形式返回。date 可以是一個(gè)DATE 字符串、一個(gè) DATETIME字符串、一個(gè) TIMESTAMP或一個(gè)當(dāng)?shù)貢r(shí)間的YYMMDD 或YYYMMDD格式的數(shù)字。
mysql SELECT UNIX_TIMESTAMP();
- 882226357
mysql SELECT UNIX_TIMESTAMP('1997-10-04 22:23:00');
- 875996580
當(dāng) UNIX_TIMESTAMP被用在 TIMESTAMP列時(shí), 函數(shù)直接返回內(nèi)部時(shí)戳值, 而不進(jìn)行任何隱含的 “string-to-Unix-timestamp”轉(zhuǎn)化。假如你向UNIX_TIMESTAMP()傳遞一個(gè)溢出日期,它會(huì)返回 0,但請(qǐng)注意只有基本范圍檢查會(huì)被履行 (年份從1970 到 2037, 月份從01到12,日期從 01 到31)。
假如你想要減去 UNIX_TIMESTAMP() 列, 你或許希望刪去帶符號(hào)整數(shù)的結(jié)果。
◆ UTC_DATE, UTC_DATE()
返回當(dāng)前 UTC日期值,其格式為 'YYYY-MM-DD' 或 YYYYMMDD,具體格式取決于函數(shù)是否用在字符串或數(shù)字語境中。
mysql SELECT UTC_DATE(), UTC_DATE() + 0;
- '2003-08-14', 20030814
◆ UTC_TIME, UTC_TIME()
返回當(dāng)前 UTC 值,其格式為 'HH:MM:SS' 或HHMMSS,具體格式根據(jù)該函數(shù)是否用在字符串或數(shù)字語境而定。
mysql SELECT UTC_TIME(), UTC_TIME() + 0;
- '18:07:53', 180753
◆ UTC_TIMESTAMP, UTC_TIMESTAMP()
返回當(dāng)前UTC日期及時(shí)間值,格式為 'YYYY-MM-DD HH:MM:SS' 或YYYYMMDDHHMMSS,具體格式根據(jù)該函數(shù)是否用在字符串或數(shù)字語境而定。
mysql SELECT UTC_TIMESTAMP(), UTC_TIMESTAMP() + 0;
- '2003-08-14 18:08:04', 20030814180804
◆ WEEK(date[,mode])
該函數(shù)返回date 對(duì)應(yīng)的星期數(shù)。WEEK() 的雙參數(shù)形式允許你指定該星期是否起始于周日或周一, 以及返回值的范圍是否為從0 到53 或從1 到53。若 mode參數(shù)被省略,則使用default_week_format系統(tǒng)自變量的值。請(qǐng)參見5.3.3節(jié),“服務(wù)器系統(tǒng)變量”。
以下表說明了mode 參數(shù)的工作過程:
mysql SELECT WEEK('1998-02-20');
- 7
mysql SELECT WEEK('1998-02-20',0);
- 7
mysql SELECT WEEK('1998-02-20',1);
- 8
mysql SELECT WEEK('1998-12-31',1);
- 53
注意,假如有一個(gè)日期位于前一年的最后一周, 若你不使用2、3、6或7作為mode 參數(shù)選擇,則MySQL返回 0:
mysql SELECT YEAR('2000-01-01'), WEEK('2000-01-01',0);
- 2000, 0
有人或許會(huì)提出意見,認(rèn)為 MySQL 對(duì)于WEEK() 函數(shù)應(yīng)該返回 52 ,原因是給定的日期實(shí)際上發(fā)生在1999年的第52周。我們決定返回0作為代替的原因是我們希望該函數(shù)能返回“給定年份的星期數(shù)”。這使得WEEK() 函數(shù)在同其它從日期中抽取日期部分的函數(shù)結(jié)合時(shí)的使用更加可靠。
假如你更希望所計(jì)算的關(guān)于年份的結(jié)果包括給定日期所在周的第一天,則應(yīng)使用 0、2、5或 7 作為mode參數(shù)選擇。
mysql SELECT WEEK('2000-01-01',2);
- 52
作為選擇,可使用 YEARWEEK()函數(shù):
mysql SELECT YEARWEEK('2000-01-01');
- 199952
mysql SELECT MID(YEARWEEK('2000-01-01'),5,2);
- '52'
◆ WEEKDAY(date)
返回date (0 = 周一, 1 = 周二, ... 6 = 周日)對(duì)應(yīng)的工作日索引 weekday index for
mysql SELECT WEEKDAY('1998-02-03 22:23:00');
- 1
mysql SELECT WEEKDAY('1997-11-05');
- 2
◆ WEEKOFYEAR(date)
將該日期的陽歷周以數(shù)字形式返回,范圍是從1到53。它是一個(gè)兼容度函數(shù),相當(dāng)于WEEK(date,3)。
mysql SELECT WEEKOFYEAR('1998-02-20');
- 8
◆ YEAR(date)
返回date 對(duì)應(yīng)的年份,范圍是從1000到9999。
mysql SELECT YEAR('98-02-03');
- 1998
◆ YEARWEEK(date), YEARWEEK(date,start)
返回一個(gè)日期對(duì)應(yīng)的年或周。start參數(shù)的工作同 start參數(shù)對(duì) WEEK()的工作相同。結(jié)果中的年份可以和該年的第一周和最后一周對(duì)應(yīng)的日期參數(shù)有所不同。
mysql SELECT YEARWEEK('1987-01-01');
- 198653
注意,周數(shù)和WEEK()函數(shù)隊(duì)可選參數(shù)0或 1可能會(huì)返回的(0) w有所不同,原因是此時(shí) WEEK() 返回給定年份的語境中的周。
本文名稱:mysql怎么獲取年 mysql 獲取年月日
當(dāng)前URL:http://jinyejixie.com/article18/ddoipdp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、品牌網(wǎng)站設(shè)計(jì)、企業(yè)網(wǎng)站制作、微信公眾號(hào)、營(yíng)銷型網(wǎng)站建設(shè)、網(wǎng)站導(dǎo)航
聲明:本網(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í)需注明來源: 創(chuàng)新互聯(lián)