Mysql日期和时间函数不求人
对于【duì yú】💤每个【měi gè】⛹类型拥有的【de】值【zhí】范围🚤以及并且指定🏋日期何【rì qī hé】时【shí】🐽间值的【jiān zhí de】有效🤢格式【gé shì】的【de】描述见7.3.6 日期和【hé】🗄时【shí】🐽间类型。
这里是【shì】🛁一个【yī gè】⛹使用日期函数【qī hán shù】的例子【de lì zǐ】。下面的【xià miàn de】♒查询选👮择了所有记录,其date_col的【de】值【zhí】是【shì】🛁在【zài】🦍最后30天【tiān】👋以内【yǐ nèi】:
mysql> SELECT something FROM table
WHERE TO_DAYS(NOW()) - TO_DAYS(date_col) <= 30;
DAYOFWEEK(date)
返回【fǎn huí】🍙日期date的星期【de xīng qī】索引🕣(1=星期天【xīng qī tiān】🌠,2=星期一【xīng qī yī】, ……7=星期六【xīng qī liù】)。这些索引🕣值【zhí】对应于ODBC标准。
mysql> select DAYOFWEEK('2025-07-05');
-> 3
WEEKDAY(date)
返回【fǎn huí】🍙date的星期【de xīng qī】索引🕣(0=星期一【xīng qī yī】,1=星期二, ……6= 星期天【xīng qī tiān】🌠)。
mysql> select WEEKDAY('2025-07-05 22:23:00');
-> 5
mysql> select WEEKDAY('2025-07-05');
-> 2
DAYOFMONTH(date)
返回【fǎn huí】🍙date的月份【de yuè fèn】🏮中日期🌯,在【zài】🦍1到【dào】🚥31范围内【fàn wéi nèi】🛥。
mysql> select DAYOFMONTH('2025-07-05');
-> 3
DAYOFYEAR(date)
返回【fǎn huí】🍙date在一年【zài yī nián】🙌中🍬的日数【de rì shù】, 在【zài】🦍1到【dào】🚥366范围内【fàn wéi nèi】🛥。
mysql> select DAYOFYEAR('2025-07-05');
-> 34
MONTH(date)
返回【fǎn huí】🍙date的月份【de yuè fèn】🏮,范围1到【dào】🚥12。
mysql> select MONTH('2025-07-05');
-> 2
DAYNAME(date)
返回【fǎn huí】🍙date的星期【de xīng qī】名字【míng zì】♿。
mysql> select DAYNAME("2025-07-05");
-> 'Thursday'
MONTHNAME(date)
返回【fǎn huí】🍙date的月份【de yuè fèn】🏮名字【míng zì】♿。
mysql> select MONTHNAME("2025-07-05");
-> 'February'
QUARTER(date)
返回【fǎn huí】🍙date一年中🔭的季度【de jì dù】🌍,范围1到【dào】🚥4。
mysql> select QUARTER('98-04-01');
-> 2
WEEK(date)
WEEK(date,first)
对于【duì yú】星📵期天【tiān】👋是【shì】🛁一周的【de】第一天【tiān】⛓的【de】地方,有一个【yī gè】⛹单个【dān gè】⛹参数【shù】,返回【fǎn huí】🍙date的【de】周数【shù】🤠,范围在【zài】🦍0到【dào】🚥52。2个【gè】⛹参数【shù】形式WEEK()允许【yǔn xǔ】🛸
你指定🔡星期是【xīng qī shì】🛁否开始【kāi shǐ】🐆于星期【yú xīng qī】天【tiān】🌠或【huò】💂星期一【xīng qī yī】。如果第💁二个【gè】⛹参数是【cān shù shì】🆒0,星期从【xīng qī cóng】😆星期天【xīng qī tiān】🌠开始【kāi shǐ】,如果第💁二个【gè】⛹参数是【cān shù shì】🆒1,
从星期😊一开始【kāi shǐ】。
mysql> select WEEK('2025-07-05');
-> 7
mysql> select WEEK('2025-07-05',0);
-> 7
mysql> select WEEK('2025-07-05',1);
-> 8
YEAR(date)
返回【fǎn huí】🍙date的【de】年份📮,范围在【zài】🦍1000到【dào】🚥9999。
mysql> select YEAR('98-02-03');
-> 1998
HOUR(time)
返回【fǎn huí】🍙time的【de】小时【xiǎo shí】🥚,范围是【shì】🌹0到【dào】🚥23。
mysql> select HOUR('10:05:03');
-> 10
MINUTE(time)
返回【fǎn huí】🍙time的【de】分钟【fèn zhōng】,范围是【shì】🌹0到【dào】🚥59。
mysql> select MINUTE('98-02-03 10:05:03');
-> 5
SECOND(time)
回来👎time的秒数【de miǎo shù】💏,范围是【shì】🌹0到【dào】🚥59。
mysql> select SECOND('10:05:03');
-> 3
PERIOD_ADD(P,N)
增加N个【gè】月【yuè】到【dào】🥒阶段P(以格式【yǐ gé shì】🔯YYMM或【huò】💂YYYYMM)。以格式【yǐ gé shì】🔯YYYYMM返回【fǎn huí】🍙值【zhí】。注意阶段参数【shù】P不是【shì】日🐧期值【qī zhí】⏩。
mysql> select PERIOD_ADD(9801,2);
-> 199803
PERIOD_DIFF(P1,P2)
返回【fǎn huí】在【zài】💧时期【shí qī】🥜P1和【hé】🗄P2之间月【zhī jiān yuè】📁数【shù】,P1和【hé】🗄P2应该以格式【yǐ gé shì】🔯YYMM或【huò】💂YYYYMM。注意,时期【shí qī】🥜参数【shù】P1和【hé】🗄P2不是【shì】日🐧期值【qī zhí】⏩。
mysql> select PERIOD_DIFF(9802,199703);
-> 11
DATE_ADD(date,INTERVAL expr type)
DATE_SUB(date,INTERVAL expr type)
ADDDATE(date,INTERVAL expr type)
SUBDATE(date,INTERVAL expr type)
这些功能执行日期运【rì qī yùn】🍃算。对于【duì yú】💤MySQL 3.22,他们是【shì】🛁新的【xīn de】。ADDDATE()和【hé】🗄SUBDATE()是【shì】🛁DATE_ADD()和【hé】🗄DATE_SUB()的同义【de tóng yì】词。
在【zài】🦍MySQL 3.23中🍬,你可以【nǐ kě yǐ】使用+和【hé】🗄-而不是【ér bú shì】🤛DATE_ADD()和【hé】🗄DATE_SUB()。(见例子)date是【shì】🛁一个【yī gè】⛹指定开【zhǐ dìng kāi】始日期🌔的【de】
DATETIME或【huò】💂DATE值【zhí】,expr是指定【shì zhǐ dìng】👅加到【dào】开🏟始日期🌔或从开【huò cóng kāi】🚂始日期🌔减去的【de】间隔值【jiān gé zhí】🌄一个【yī gè】⛹表达式【biǎo dá shì】,expr是【shì】🛁一个【yī gè】⛹字符串;它可以以
一个【yī gè】⛹“-”开始【kāi shǐ】表示负间隔。type是【shì】🛁一个【yī gè】⛹关键词【guān jiàn cí】🌿,指明表达式【biǎo dá shì】应该如何被解释。EXTRACT(type FROM date)函数【shù】从💂日期
中返回【zhōng fǎn huí】🎟“type”间隔。下表显【xià biǎo xiǎn】示了type和【hé】🗄expr参数【shù】怎样被关联: type值【zhí】 含义 期望的【de】🏮expr格式【gé shì】
SECOND 秒【miǎo】 SECONDS
MINUTE 分钟【fèn zhōng】 MINUTES
HOUR 时【shí】🐽间 HOURS
DAY 天【tiān】👋 DAYS
MONTH 月【yuè】📁 MONTHS
YEAR 年 YEARS
MINUTE_SECOND 分钟和【fèn zhōng hé】💉秒【miǎo】 "MINUTES:SECONDS"
HOUR_MINUTE 小时【xiǎo shí】🐱和【hé】🗄分钟【fèn zhōng】 "HOURS:MINUTES"
DAY_HOUR 天【tiān】👋和【hé】🗄小时【xiǎo shí】🐱 "DAYS HOURS"
YEAR_MONTH 年和【hé】🗄月【yuè】📁 "YEARS-MONTHS"
HOUR_SECOND 小时【xiǎo shí】🐱, 分钟【fèn zhōng】, "HOURS:MINUTES:SECONDS"
DAY_MINUTE 天【tiān】👋, 小时【xiǎo shí】🐱, 分钟【fèn zhōng】 "DAYS HOURS:MINUTES"
DAY_SECOND 天【tiān】👋, 小时【xiǎo shí】🐱, 分钟【fèn zhōng】, 秒【miǎo】 "DAYS HOURS:MINUTES:SECONDS"
MySQL在【zài】🦍expr格式【gé shì】中🍊允许【yǔn xǔ】🛸任何标【rèn hé biāo】点分隔符【fèn gé fú】🏧。表示显♓示的【de】是【shì】🛁建议的【jiàn yì de】分隔符【fèn gé fú】🏧。如果🎏date参数是【cān shù shì】🆒一个【yī gè】⛹DATE值并且【zhí bìng qiě】🔘你的计【nǐ de jì】🈚算仅仅
包含👉YEAR、MONTH和【hé】🗄DAY部分【bù fèn】🍨(即,没有时【méi yǒu shí】👧间部分【bù fèn】🍨),结果是【jié guǒ shì】🛁一个【yī gè】⛹DATE值【zhí】。否则结【fǒu zé jié】果是【shì】🛁一个【yī gè】⛹DATETIME值【zhí】。
mysql> SELECT "2025-07-05 23:59:59" + INTERVAL 1 SECOND;
-> 2025-07-05 00:00:00
mysql> SELECT INTERVAL 1 DAY + "2025-07-05";
-> 2025-07-05
mysql> SELECT "2025-07-05" - INTERVAL 1 SECOND;
-> 2025-07-05 23:59:59
mysql> SELECT DATE_ADD("2025-07-05 23:59:59",
INTERVAL 1 SECOND);
-> 2025-07-05 00:00:00
mysql> SELECT DATE_ADD("2025-07-05 23:59:59",
INTERVAL 1 DAY);
-> 2025-07-05 23:59:59
mysql> SELECT DATE_ADD("2025-07-05 23:59:59",
INTERVAL "1:1" MINUTE_SECOND);
-> 2025-07-05 00:01:00
mysql> SELECT DATE_SUB("2025-07-05 00:00:00",
INTERVAL "1 1:1:1" DAY_SECOND);
-> 2025-07-05 22:58:59
mysql> SELECT DATE_ADD("2025-07-05 00:00:00",
INTERVAL "-1 10" DAY_HOUR);
-> 2025-07-05 14:00:00
mysql> SELECT DATE_SUB("2025-07-05", INTERVAL 31 DAY);
-> 2025-07-05
mysql> SELECT EXTRACT(YEAR FROM "2025-07-05");
-> 1999
mysql> SELECT EXTRACT(YEAR_MONTH FROM "2025-07-05 01:02:03");
-> 199907
mysql> SELECT EXTRACT(DAY_MINUTE FROM "2025-07-05 01:02:03");
-> 20102
如果你🕥指定太【zhǐ dìng tài】短的【de】间隔值【jiān gé zhí】🌄(不包括🏼type关键词【guān jiàn cí】🌿期望的【de】🏮间隔部💙分【fèn】),MySQL假设你🅾省掉了间隔值【jiān gé zhí】🌄的【de】最左面部分【bù fèn】🍨。例如,
如果你🕥指定一个【yī gè】⛹type是【shì】🛁DAY_SECOND,值【zhí】expr被希望【bèi xī wàng】有天【yǒu tiān】🐲、小时【xiǎo shí】🐱、分钟和【fèn zhōng hé】💉秒【miǎo】部分【bù fèn】🍨。如果你🕥象"1:10"这样指定值【dìng zhí】,
MySQL假设日子和【hé】小🦀时【shí】🐽部分【bù fèn】🍨是【shì】🛁丢失的【de】并且🧟值代表【zhí dài biǎo】分钟和【fèn zhōng hé】💉秒【miǎo】。换句话
关键词【guān jiàn cí】🌿:Mysql
阅读本文后您有什么感想? 已有 人给出评价!
- 10
- 4
- 6
- 13
- 104
- 4