mysql数据库日期函数学习

合集下载

如何在MySQL中处理日期和时间数据

如何在MySQL中处理日期和时间数据

如何在MySQL中处理日期和时间数据在数据库开发中,日期和时间是常见的数据类型,用于记录事件发生的日期和时间。

在MySQL中,有多种方法可以处理日期和时间数据,包括存储、计算和显示等方面的操作。

本文将介绍如何在MySQL中处理日期和时间数据,并给出一些实际应用的示例。

一、日期和时间的数据类型在MySQL中,提供了多种日期和时间的数据类型,常用的有DATE、TIME、DATETIME和TIMESTAMP等。

它们分别用于表示日期、时间、日期和时间的组合,以及时间戳等。

1. DATE类型DATE类型用于表示日期,格式为'YYYY-MM-DD',例如'2022-12-31'。

它有4个字节的存储空间,在MySQL中可以表示的日期范围为'1000-01-01'至'9999-12-31'。

2. TIME类型TIME类型用于表示时间,格式为'HH:MM:SS',例如'12:34:56'。

它有3个字节的存储空间,在MySQL中可以表示的时间范围为'-838:59:59'至'838:59:59'。

3. DATETIME类型DATETIME类型用于表示日期和时间的组合,格式为'YYYY-MM-DDHH:MM:SS',例如'2022-12-31 12:34:56'。

它有8个字节的存储空间,在MySQL中可以表示的日期范围为'1000-01-01 00:00:00'至'9999-12-31 23:59:59'。

4. TIMESTAMP类型TIMESTAMP类型也用于表示日期和时间的组合,格式和范围与DATETIME 类型相同。

不同之处在于,TIMESTAMP类型在存储时会自动转换为UTC时间,并以整数形式保存。

在使用时,会自动转换为当前时区的时间。

数据库MySQL常用函数大全

数据库MySQL常用函数大全

数据库MySQL常用函数大全一、数学函数ABS(x) 返回x的绝对值BIN(x)返回x的二进制(OCT返回八进制,HEX返回十六进制)CEILING(x) 返回大于x的最小整数值EXP(x)返回值e(自然对数的底)的x次方FLOOR(x)返回小于x的最大整数值GREATEST(x1,x2,...,xn)返回集合中最大的值LEAST(x1,x2,...,xn) 返回集合中最小的值LN(x) 返回x的自然对数LOG(x,y)返回x的以y为底的对数MOD(x,y) 返回x/y的模(余数)PI()返回pi的值(圆周率)RAND()返回0到1内的随机值,可以通过提供一个参数(种子)使RAND()随机数生成器生成一个指定的值。

ROUND(x,y)返回参数x的四舍五入的有y位小数的值SIGN(x) 返回代表数字x的符号的值SQRT(x) 返回一个数的平方根TRUNCATE(x,y) 返回数字x截短为y位小数的结果二、聚合函数(常用于GROUP BY从句的SELECT查询中)AVG(col)返回指定列的平均值COUNT(col)返回指定列中非NULL值的个数MIN(col)返回指定列的最小值MAX(col)返回指定列的最大值SUM(col)返回指定列的所有值之和GROUP_CONCAT(col) 返回由属于一组的列值连接组合而成的结果三、字符串函数ASCII(char)返回字符的ASCII码值BIT_LENGTH(str)返回字符串的比特长度CONCAT(s1,s2...,sn)将s1,s2...,sn连接成字符串CONCAT_WS(sep,s1,s2...,sn)将s1,s2...,sn连接成字符串,并用sep字符间隔INSERT(str,x,y,instr) 将字符串str从第x位置开始,y个字符长的子串替换为字符串instr,返回结果FIND_IN_SET(str,list)分析逗号分隔的list列表,如果发现str,返回str在list中的位置LCASE(str)或LOWER(str) 返回将字符串str中所有字符改变为小写后的结果LEFT(str,x)返回字符串str中最左边的x个字符LENGTH(s)返回字符串str中的字符数LTRIM(str) 从字符串str中切掉开头的空格POSITION(substr,str) 返回子串substr在字符串str中第一次出现的位置QUOTE(str) 用反斜杠转义str中的单引号REPEAT(str,srchstr,rplcstr)返回字符串str重复x次的结果REVERSE(str) 返回颠倒字符串str的结果RIGHT(str,x) 返回字符串str中最右边的x个字符RTRIM(str) 返回字符串str尾部的空格STRCMP(s1,s2)比较字符串s1和s2TRIM(str)去除字符串首部和尾部的所有空格UCASE(str)或UPPER(str) 返回将字符串str中所有字符转变为大写后的结果四、日期和时间函数CURDATE()或CURRENT_DATE() 返回当前的日期CURTIME()或CURRENT_TIME() 返回当前的时间DATE_ADD(date,INTERVAL int keyword) 返回日期date加上间隔时间int的结果(int必须按照关键字进行格式化),如:SELECT DATE_ADD(CURRENT_DATE,INTERVAL 6 MONTH); DATE_FORMAT(date,fmt) 依照指定的fmt格式格式化日期date值DATE_SUB(date,INTERVAL int keyword) 返回日期date加上间隔时间int的结果(int必须按照关键字进行格式化),如:SELECT DATE_SUB(CURRENT_DATE,INTERVAL 6 MONTH); DAYOFWEEK(date) 返回date所代表的一星期中的第几天(1~7)DAYOFMONTH(date) 返回date是一个月的第几天(1~31)DAYOFYEAR(date) 返回date是一年的第几天(1~366)DAYNAME(date) 返回date的星期名,如:SELECT DAYNAME(CURRENT_DATE); FROM_UNIXTIME(ts,fmt) 根据指定的fmt格式,格式化UNIX时间戳tsHOUR(time) 返回time的小时值(0~23)MINUTE(time) 返回time的分钟值(0~59)MONTH(date) 返回date的月份值(1~12)MONTHNAME(date) 返回date的月份名,如:SELECTMONTHNAME(CURRENT_DATE);NOW() 返回当前的日期和时间QUARTER(date) 返回date在一年中的季度(1~4),如SELECTQUARTER(CURRENT_DATE);WEEK(date) 返回日期date为一年中第几周(0~53)YEAR(date) 返回日期date的年份(1000~9999)一些示例:获取当前系统时间:SELECT FROM_UNIXTIME(UNIX_TIMESTAMP());SELECT EXTRACT(YEAR_MONTH FROM CURRENT_DATE);SELECT EXTRACT(DAY_SECOND FROM CURRENT_DATE);SELECT EXTRACT(HOUR_MINUTE FROM CURRENT_DATE);返回两个日期值之间的差值(月数):SELECT PERIOD_DIFF(200302,199802);在Mysql中计算年龄:SELECT DATE_FORMAT(FROM_DAYS(TO_DAYS(NOW())-TO_DAYS(birthday)), '%Y')+0 AS age FROM employee;这样,如果Brithday是未来的年月日的话,计算结果为0。

mysql计算农历_计算农历日期函数

mysql计算农历_计算农历日期函数

mysql计算农历_计算农历⽇期函数计算农历⽇期函数最近在⽹上看到了⼀个⽤PLSQL直接从公历来计算农历的过程,发觉很好。

⼀⽅⾯可以了解⼀下怎么计算农历⽇期的逻辑,另⼀⽅⾯也学习⼀下这类程序应该怎么写的。

不过看作者⾃⼰把那么多的字符串接起来也真是不容易啊,佩服⼀个~CREATETABLESolarData(YearIDINTEGERNOTNULL,--农历年DATACHAR(7)NOTNULL,--农历年对应的16进制数DataIntINTEGERNOTNULL--进制数);INSERT INTO SolarData VALUES (1900,'0x04bd8' ,19416 );INSERT INTO SolarData VALUES (1901,'0x04ae0' ,19168 );INSERT INTO SolarData VALUES (1902,'0x0a570');INSERT INTO SolarData VALUES (1903,'0x054d5' ,21717 );INSERT INTO SolarData VALUES (1904,'0x0d260' ,53856 );INSERT INTO SolarData VALUES (1905,'0x0d950' ,INTO SolarData VALUES (1906,'0x16554' ,91476 );INSERT INTO SolarData VALUES (1907,'0x056a0' ,22176 );INSERT INTO SolarData VALUES (1908,'0x09ad0' ,39632VALUES (1909,'0x055d2' ,21970 );INSERT INTO SolarData VALUES (1910,'0x04ae0' ,19168 );INSERT INTO SolarData VALUES (1911,'0x0a5b6' ,42422 );(1912,'0x0a4d0' ,42192 );INSERT INTO SolarData VALUES (1913,'0x0d250' ,53840 );INSERT INTO SolarData VALUES (1914,'0x1d255' ,119381 );INSERT(1915,'0x0b540' ,46400 );INSERT INTO SolarData VALUES (1916,'0x0d6a0' ,54944 );INSERT INTO SolarData VALUES (1917,'0x0ada2' ,44450 );INSERT INTO(1918,'0x095b0' ,38320 );INSERT INTO SolarData VALUES (1919,'0x14977' ,84343 );INSERT INTO SolarData VALUES (1920,'0x04970' ,18800 );INSERT INTO SolarData1921,'0x0a4b0' ,42160 );INSERT INTO SolarData VALUES (1922,'0x0b4b5' ,46261 );INSERT INTO SolarData VALUES (1923,'0x06a50' ,27216 );INSERT INTO SolarData VALUES,'0x06d40' ,27968 );INSERT INTO SolarData VALUES (1925,'0x1ab54' ,109396 );INSERT INTO SolarData VALUES (1926,'0x02b60' ,11104 );INSERT INTO SolarData VALUES ('0x09570' ,38256 );INSERT INTO SolarData VALUES (1928,'0x052f2' ,21234 );INSERT INTO SolarData VALUES (1929,'0x04970' ,18800 );INSERT INTO SolarData VALUES (1930,25958 );INSERT INTO SolarData VALUES (1931,'0x0d4a0' ,54432 );INSERT INTO SolarData VALUES (1932,'0x0ea50' ,59984 );INSERT INTO SolarData VALUES (1933,28309 );INSERT INTO SolarData VALUES (1934,'0x05ad0' ,23248 );INSERT INTO SolarData VALUES (1935,'0x02b60' ,11104 );INSERT INTO SolarData VALUES (1936,'0x186e3');INSERT INTO SolarData VALUES (1937,'0x092e0' ,37600 );INSERT INTO SolarData VALUES (1938,'0x1c8d7' ,116951 );INSERT INTO SolarData VALUES (1939,'0x0c950' ,INTO SolarData VALUES (1940,'0x0d4a0' ,54432 );INSERT INTO SolarData VALUES (1941,'0x1d8a6' ,120998 );INSERT INTO SolarData VALUES (1942,'0x0b550' ,46416VALUES (1943,'0x056a0' ,22176 );INSERT INTO SolarData VALUES (1944,'0x1a5b4' ,107956 );INSERT INTO SolarData VALUES (1945,'0x025d0' ,9680);(1946,'0x092d0' ,37584 );INSERT INTO SolarData VALUES (1947,'0x0d2b2' ,53938 );INSERT INTO SolarData VALUES (1948,'0x0a950' ,43344 );INSERT(1949,'0x0b557' ,46423 );INSERT INTO SolarData VALUES (1950,'0x06ca0' ,27808 );INSERT INTO SolarData VALUES (1951,'0x0b550' ,46416 );INSERT INTO(1952,'0x15355' ,86869 );INSERT INTO SolarData VALUES (1953,'0x04da0' ,19872 );INSERT INTO SolarData VALUES (1954,'0x0a5d0' ,42448 );INSERT INTO SolarData1955,'0x14573' ,83315 );INSERT INTO SolarData VALUES (1956,'0x052d0' ,21200 );INSERT INTO SolarData VALUES (1957,'0x0a9a8' ,43432 );INSERT INTO SolarData VALUES,'0x0e950' ,59728 );INSERT INTO SolarData VALUES (1959,'0x06aa0' ,27296 );INSERT INTO SolarData VALUES (1960,'0x0aea6' ,44710 );INSERT INTO SolarData VALUES ('0x0ab50' ,43856 );INSERT INTO SolarData VALUES (1962,'0x04b60' ,19296 );INSERT INTO SolarData VALUES (1963,'0x0aae4' ,43748 );INSERT INTO SolarData VALUES (1964,42352 );INSERT INTO SolarData VALUES (1965,'0x05260' ,21088 );INSERT INTO SolarData VALUES (1966,'0x0f263' ,62051 );INSERT INTO SolarData VALUES (1967,55632 );INSERT INTO SolarData VALUES (1968,'0x05b57' ,23383 );INSERT INTO SolarData VALUES (1969,'0x056a0' ,22176 );INSERT INTO SolarData VALUES (1970,'0x096d0');INSERT INTO SolarData VALUES (1971,'0x04dd5' ,19925 );INSERT INTO SolarData VALUES (1972,'0x04ad0' ,19152 );INSERT INTO SolarData VALUES (1973,'0x0a4d0' ,INTO SolarData VALUES (1974,'0x0d4d4' ,54484 );INSERT INTO SolarData VALUES (1975,'0x0d250' ,53840 );INSERT INTO SolarData VALUES (1976,'0x0d558' ,54616VALUES (1977,'0x0b540' ,46400 );INSERT INTO SolarData VALUES (1978,'0x0b5a0' ,46496 );INSERT INTO SolarData VALUES (1979,'0x195a6' ,103846 );(1980,'0x095b0' ,38320 );INSERT INTO SolarData VALUES (1981,'0x049b0' ,18864 );INSERT INTO SolarData VALUES (1982,'0x0a974' ,43380 );INSERT(1983,'0x0a4b0' ,42160 );INSERT INTO SolarData VALUES (1984,'0x0b27a' ,45690 );INSERT INTO SolarData VALUES (1985,'0x06a50' ,27216 );INSERT INTO(1986,'0x06d40' ,27968 );INSERT INTO SolarData VALUES (1987,'0x0af46' ,44870 );INSERT INTO SolarData VALUES (1988,'0x0ab60' ,43872 );INSERT INTO SolarData1989,'0x09570' ,38256 );INSERT INTO SolarData VALUES (1990,'0x04af5' ,19189 );INSERT INTO SolarData VALUES (1991,'0x04970' ,18800 );INSERT INTO SolarData VALUES,'0x064b0' ,25776 );INSERT INTO SolarData VALUES (1993,'0x074a3' ,29859 );INSERT INTO SolarData VALUES (1994,'0x0ea50' ,59984 );INSERT INTO SolarData VALUES ('0x06b58' ,27480 );INSERT INTO SolarData VALUES (1996,'0x055c0' ,21952 );INSERT INTO SolarData VALUES (1997,'0x0ab60' ,43872 );INSERT INTO SolarData VALUES (1998,38613 );INSERT INTO SolarData VALUES (1999,'0x092e0' ,37600 );INSERT INTO SolarData VALUES (2000,'0x0c960' ,51552 );INSERT INTO SolarData VALUES (2001,55636 );INSERT INTO SolarData VALUES (2002,'0x0d4a0' ,54432 );INSERT INTO SolarData VALUES (2003,'0x0da50' ,55888 );INSERT INTO SolarData VALUES (2004,'0x07552');INSERT INTO SolarData VALUES (2005,'0x056a0' ,22176 );INSERT INTO SolarData VALUES (2006,'0x0abb7' ,43959 );INSERT INTO SolarData VALUES (2007,'0x025d0' ,INTO SolarData VALUES (2008,'0x092d0' ,37584 );INSERT INTO SolarData VALUES (2009,'0x0cab5' ,51893 );INSERT INTO SolarData VALUES (2010,'0x0a950' ,43344VALUES (2011,'0x0b4a0' ,46240 );INSERT INTO SolarData VALUES (2012,'0x0baa4' ,47780 );INSERT INTO SolarData VALUES (2013,'0x0ad50' ,44368 );(2014,'0x055d9' ,21977 );INSERT INTO SolarData VALUES (2015,'0x04ba0' ,19360 );INSERT INTO SolarData VALUES (2016,'0x0a5b0' ,42416 );INSERT(2017,'0x15176' ,86390 );INSERT INTO SolarData VALUES (2018,'0x052b0' ,21168 );INSERT INTO SolarData VALUES (2019,'0x0a930' ,43312 );INSERT INTO(2020,'0x07954' ,31060 );INSERT INTO SolarData VALUES (2021,'0x06aa0' ,27296 );INSERT INTO SolarData VALUES (2022,'0x0ad50' ,44368 );INSERT INTO SolarData VALUES2023,'0x05b52' ,23378 );INSERT INTO SolarData VALUES (2024,'0x04b60' ,19296 );INSERT INTO SolarData VALUES (2025,'0x0a6e6' ,42726 );INSERT INTO SolarData VALUES (,'0x0a4e0' ,42208 );INSERT INTO SolarData VALUES (2027,'0x0d260' ,53856 );INSERT INTO SolarData VALUES (2028,'0x0ea65' ,60005 );INSERT INTO SolarData VALUES (2029'0x0d530' ,54576 );INSERT INTO SolarData VALUES (2030,'0x05aa0' ,23200 );INSERT INTO SolarData VALUES (2031,'0x076a3' ,30371 );INSERT INTO SolarData VALUES (2032,,38608 );INSERT INTO SolarData VALUES (2033,'0x04bd7' ,19415 );INSERT INTO SolarData VALUES (2034,'0x04ad0' ,19152 );INSERT INTO SolarData VALUES (2035,'0x0a4d0'42192 );INSERT INTO SolarData VALUES (2036,'0x1d0b6' ,118966 );INSERT INTO SolarData VALUES (2037,'0x0d250' ,53840 );INSERT INTO SolarData VALUES (2038,'0x0d520' ,);INSERT INTO SolarData VALUES (2039,'0x0dd45' ,56645 );INSERT INTO SolarData VALUES (2040,'0x0b5a0' ,46496 );INSERT INTO SolarData VALUES (2041,'0x056d0' ,22224INTO SolarData VALUES (2042,'0x055b2' ,21938 );INSERT INTO SolarData VALUES (2043,'0x049b0' ,18864 );INSERT INTO SolarData VALUES (2044,'0x0a577' ,42359 );SolarData VALUES (2045,'0x0a4b0' ,42160 );INSERT INTO SolarData VALUES (2046,'0x0aa50' ,43600 );INSERT INTO SolarData VALUES (2047,'0x1b255' ,111189 );INSERTSolarDataVALUES(2048,'0x06d20',27936);INSERTINTOSolarDataVALUES(2049,'0x0ada0',44448);COMMIT;CREATEORREPLACEFUNCTIONf_GetLunar(i_SolarDay DATE)RETURNVARCHAR2--功能:计算阳历。

详解Mysql数据库date,d...

详解Mysql数据库date,d...

详解Mysql数据库date,d...现象:MySQL5.7版本之后,date, datetime类型设置默认值"0000-00-00",出现异常:Invalid default value for 'time'原因:在命令⾏窗⼝查看当前的sql_mode配置:select @@sql_mode;结果如下:ONLY_FULL_GROUP_BY, STRICT_TRANS_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER, and NO_ENGINE_SUBSTITUTION其中NO_ZERO_IN_DATE, NO_ZERO_DATE两个选项禁⽌了0000这样的⽇期和时间。

因此在mysql的配置⽂件中,重新设置sql_mode,去掉这两项就可以了。

解决办法1.windows系统下:使⽤ SET [SESSION|GLOBAL] sql_mode='modes'注意:SESSION(默认选项):表⽰当前回话中⽣效;GLOBAL(需重启):表⽰全局⽣效也可以修改my.ini配置⽂件***演⽰:SET GLOBAL sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'1.Linux系统下:修改f⽂件,在[mysqld]中添加复制代码代码如下:sql-mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION修改完成⼀定重启MySQL2.Mac系统下:在MacOS中默认是没有f ⽂件,如果需要对MySql 进⾏定制,拷贝/usr/local/mysql/support-files/⽬录中任意⼀个.cnf ⽂件。

mysql day函数的用法(一)

mysql day函数的用法(一)

MySQL的day函数是一个非常常用的日期函数,它可以用来提取日期中的天数部分进行操作。

在实际的数据库操作中,我们经常会用到day函数来进行日期的处理和计算。

下面我们就来详细讲解一下MySQL的day函数的用法。

1. day函数的基本语法day函数的基本语法如下:```DAY(date)```其中,date是一个合法的日期表达式,可以是一个日期、时间或日期时间值,也可以是一个包含日期的字符串。

2. 提取日期中的天数部分day函数最常用的功能就是提取日期中的天数部分。

例如,我们有一个订单表,其中有一个字段是订单日期,我们想要统计每个月的订单量,就可以使用day函数来提取日期中的天数部分,然后进行分组统计。

示例代码如下:```SELECT DAY(order_date) AS order_day, COUNT(*) AS order_countFROM ordersGROUP BY DAY(order_date);```这段代码会将订单表中的订单日期按照天数进行分组统计,并返回每个天数的订单数量。

3. 计算日期之间的天数差除了提取日期中的天数部分,day函数还可以用来计算日期之间的天数差。

例如,我们想要计算两个日期之间相差的天数,就可以使用day函数来获取日期的天数部分,然后进行相减操作。

示例代码如下:```SELECT DATEDIFF('', '') AS day_diff;```这段代码会计算和两个日期之间相差的天数,返回-9,表示比要晚9天。

4. 判断日期中的天数部分是否符合条件在实际的业务中,我们可能需要根据日期中的天数部分来进行条件判断。

例如,我们要筛选出订单日期是某个月份某一天的订单,就可以使用day函数来提取日期中的天数部分,然后进行条件判断。

示例代码如下:```SELECT *FROM ordersWHERE DAY(order_date) = 15;```这段代码会筛选出订单日期为当月15号的订单记录。

MYSQLDATE_FORMAT函数参数详解

MYSQLDATE_FORMAT函数参数详解

MYSQLDATE_FORMAT函数参数详解下面是一些常用的格式字符串和对应的输出结果:-%Y:四位的年份。

例如,2024-%y:两位的年份。

例如,22- %M: 月份的英文全名。

例如,January。

-%m:月份的数字,两位表示。

例如,01- %D: 日期的英文序数词,包括st、nd、rd和th。

例如,1st。

-%d:日期的数字,两位表示。

例如,01- %W: 星期的英文全名。

例如,Monday。

-%w:星期的数字表示,0表示星期天,1表示星期一,以此类推。

-%H:小时的24小时制表示,两位表示。

例如,09-%h:小时的12小时制表示,两位表示。

例如,09或者09-%i:分钟的两位表示。

例如,05-%s:秒的两位表示。

例如,01-%p:上午或下午的表示。

例如,AM或者PM。

除了上面的一些常用格式字符串,DATE_FORMAT(函数还支持其他一些格式字符串,如%a表示星期的英文缩写,%b表示月份的英文缩写,%r表示时间的12小时制表示等等。

下面是一个例子,演示如何使用DATE_FORMAT(函数进行日期格式化:```SELECT DATE_FORMAT('2024-01-01', '%Y-%m-%d') ASformatted_date;```上面的查询将返回'2024-01-01',它是将'2024-01-01'按照格式字符串'%Y-%m-%d'进行格式化得到的结果。

总结一下,MYSQL的DATE_FORMAT(函数是用于格式化日期的函数。

它接受日期值和格式字符串作为参数,返回按照指定格式格式化后的日期结果。

格式字符串可以通过使用不同的格式化标识符来指定输出的日期格式。

在使用DATE_FORMAT(函数时,可以根据具体需求选择合适的格式字符串来实现所需的日期格式化效果。

mysql date_format函数用法

mysql date_format函数用法

mysql date_format函数用法MySQL中的date_format函数是将日期数据按指定格式转换为字符串的函数,常用于将日期格式化为用户友好的方式。

在本文中,我们将对MySQL中date_format函数的用法进行全面介绍,内容包括函数定义、参数说明、示例演示以及常见问题解答等方面。

一、函数定义date_format函数是MySQL日期和时间函数之一,用于将日期数据按指定格式转换为字符串。

该函数定义如下:DATE_FORMAT(date, format)参数date是日期时间类型的值,格式为'YYYY-MM-DD'或'YYYY-MM-DD HH:MM:SS';参数format是指定的日期时间格式字符串。

二、参数说明1. date:日期时间类型的值,格式为'YYYY-MM-DD'或'YYYY-MM-DD HH:MM:SS',可以是日期类型、日期时间类型、时间戳类型或者是字符串类型。

2. format:指定的日期时间格式字符串,支持的格式如下:%a:星期几(缩写)%b:月份(缩写)%c:月份(数字)%D:日(带有英文前缀th、st、nd、rd)%d:日(数字格式,不足两位则前面补0)%e:日(数字格式,不足两位则前面不补0)%f:毫秒(微秒、毫秒、或秒)%H:小时(24小时制的数字,不足两位前面补0)%h:小时(12小时制的数字,不足两位前面补0)%I:小时(12小时制的数字,不足两位前面不补0)%i:分钟(不足两位前面补0)%j:当年的第几天(不足3位前面补0)%k:小时(24小时制的数字,不足两位前面不补0)%l:小时(12小时制的数字,不足两位前面不补0)%M:月份(完整的月份名称)%m:月份(数字格式,不足两位则前面补0)%p:上午或下午(AM或PM)%r:时间(12小时制,格式为hh:mm:ss AM/PM)%S:秒(不足两位前面补0)%s:秒%T:时间(24小时制,格式为hh:mm:ss)%U:当年的第几周(以星期日为一周的第一天)%u:当年的第几周(以星期一为一周的第一天)%V:当年的第几周(以ISO-8601标准为准)%v:当年的第几周(以星期一为一周的第一天,不足两位前面补0) %W:星期几(完整的星期名称)%w:星期几(数字,以星期日为一周的第一天)%X:年(四位数)%x:年(两位数)%Y:年(四位数)%y:年(两位数)%%:百分号三、示例演示以下是日期时间数据示例:2019-01-03 10:40:25现在,我们可以通过date_format函数,将上述日期时间数据按照指定格式进行转换。

MySQL学习笔记:timediff、timestampdiff、datediff

MySQL学习笔记:timediff、timestampdiff、datediff

MySQL学习笔记:timediff、timestampdiff、datediff⼀、时间差函数:timestampdiff 语法:timestampdiff(interval, datetime1,datetime2) 结果:返回(时间2-时间1)的时间差,结果单位由interval参数给出。

frac_second 毫秒(低版本不⽀持,⽤second,再除于1000)second 秒minute 分钟hour ⼩时day 天week 周month ⽉quarter 季度year 年 注意:MySQL 5.6之后才⽀持毫秒的记录和计算,如果是之前的版本,最好是在数据库除datetime类型之外的字段,再建⽴⽤于存储毫秒的int字段,然后⾃⼰进⾏转换计算。

# 所有格式SELECT TIMESTAMPDIFF(FRAC_SECOND,'2012-10-01','2013-01-13'); # 暂不⽀持SELECT TIMESTAMPDIFF(SECOND,'2012-10-01','2013-01-13'); # 8985600SELECT TIMESTAMPDIFF(MINUTE,'2012-10-01','2013-01-13'); # 149760SELECT TIMESTAMPDIFF(HOUR,'2012-10-01','2013-01-13'); # 2496SELECT TIMESTAMPDIFF(DAY,'2012-10-01','2013-01-13'); # 104SELECT TIMESTAMPDIFF(WEEK,'2012-10-01','2013-01-13'); # 14SELECT TIMESTAMPDIFF(MONTH,'2012-10-01','2013-01-13'); # 3SELECT TIMESTAMPDIFF(QUARTER,'2012-10-01','2013-01-13'); # 1SELECT TIMESTAMPDIFF(YEAR,'2012-10-01','2013-01-13'); # 0⼆、时间差函数:datediff 语法:传⼊两个⽇期参数,⽐较DAY天数,第⼀个参数减去第⼆个参数的天数值。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Mysql日期函数,时间函数使用的总结习一、MySQL 获得当前日期时间函数1.1 获得当前日期+时间(date + time)函数:now()mysql> select now();+---------------------+| now() |+---------------------+| 2008-08-08 22:20:46 |+---------------------+除了now() 函数能获得当前的日期时间外,MySQL 中还有下面的函数:current_timestamp(),current_timestamp,localtime(),localtime,localtimestamp -- (v4.0.6),localtimestamp() -- (v4.0.6)这些日期时间函数,都等同于now()。

鉴于now() 函数简短易记,建议总是使用now() 来替代上面列出的函数。

1.2 获得当前日期+时间(date + time)函数:sysdate()sysdate() 日期时间函数跟now() 类似,不同之处在于:now() 在执行开始时值就得到了,sysdate() 在函数执行时动态得到值。

看下面的例子就明白了:mysql> select now(), sleep(3), now();+---------------------+----------+---------------------+| now() | sleep(3) | now() |+---------------------+----------+---------------------+| 2008-08-08 22:28:21 | 0 | 2008-08-08 22:28:21 |+---------------------+----------+---------------------+mysql> select sysdate(), sleep(3), sysdate();+---------------------+----------+---------------------+| sysdate() | sleep(3) | sysdate() |+---------------------+----------+---------------------+| 2008-08-08 22:28:41 | 0 | 2008-08-08 22:28:44 |+---------------------+----------+---------------------+可以看到,虽然中途sleep 3 秒,但now() 函数两次的时间值是相同的;sysdate() 函数两次得到的时间值相差3 秒。

MySQL Manual 中是这样描述sysdate() 的:Return the time at which the function executes。

sysdate() 日期时间函数,一般情况下很少用到。

2. 获得当前日期(date)函数:curdate()mysql> select curdate();+------------+| curdate() |+------------+| 2008-08-08 |+------------+其中,下面的两个日期函数等同于curdate():current_date(),current_date3. 获得当前时间(time)函数:curtime()mysql> select curtime();+-----------+| curtime() |+-----------+| 22:41:30 |+-----------+其中,下面的两个时间函数等同于curtime():current_time(),current_time4. 获得当前UTC 日期时间函数:utc_date(), utc_time(), utc_timestamp()mysql> select utc_timestamp(), utc_date(), utc_time(), now()+---------------------+------------+------------+---------------------+| utc_timestamp() | utc_date() | utc_time() | now() |+---------------------+------------+------------+---------------------+| 2008-08-08 14:47:11 | 2008-08-08 | 14:47:11 | 2008-08-08 22:47:11 |+---------------------+------------+------------+---------------------+因为我国位于东八时区,所以本地时间= UTC 时间+ 8 小时。

UTC 时间在业务涉及多个国家和地区的时候,非常有用。

二、MySQL 日期时间Extract(选取)函数。

1. 选取日期时间的各个部分:日期、时间、年、季度、月、日、小时、分钟、秒、微秒set @dt = '2008-09-10 07:15:30.123456';select date(@dt); -- 2008-09-10select time(@dt); -- 07:15:30.123456select year(@dt); -- 2008select quarter(@dt); -- 3select month(@dt); -- 9select week(@dt); -- 36select day(@dt); -- 10select hour(@dt); -- 7select minute(@dt); -- 15select second(@dt); -- 30select microsecond(@dt); -- 1234562. MySQL Extract() 函数,可以上面实现类似的功能:set @dt = '2008-09-10 07:15:30.123456';select extract(year from @dt); -- 2008select extract(quarter from @dt); -- 3select extract(month from @dt); -- 9select extract(week from @dt); -- 36select extract(day from @dt); -- 10select extract(hour from @dt); -- 7select extract(minute from @dt); -- 15select extract(second from @dt); -- 30select extract(microsecond from @dt); -- 123456select extract(year_month from @dt); -- 200809select extract(day_hour from @dt); -- 1007select extract(day_minute from @dt); -- 100715select extract(day_second from @dt); -- 10071530select extract(day_microsecond from @dt); -- 10071530123456select extract(hour_minute from @dt); -- 715select extract(hour_second from @dt); -- 71530select extract(hour_microsecond from @dt); -- 71530123456select extract(minute_second from @dt); -- 1530select extract(minute_microsecond from @dt); -- 1530123456select extract(second_microsecond from @dt); -- 30123456MySQL Extract() 函数除了没有date(),time() 的功能外,其他功能一应具全。

并且还具有选取…day_microsecond‟ 等功能。

注意这里不是只选取day 和microsecond,而是从日期的day 部分一直选取到microsecond 部分。

够强悍的吧!MySQL Extract() 函数唯一不好的地方在于:你需要多敲几次键盘。

3. MySQL dayof... 函数:dayofweek(), dayofmonth(), dayofyear()分别返回日期参数,在一周、一月、一年中的位置。

set @dt = '2008-08-08';select dayofweek(@dt); -- 6select dayofmonth(@dt); -- 8select dayofyear(@dt); -- 221日期'2008-08-08' 是一周中的第6 天(1 = Sunday, 2 = Monday, ..., 7 = Saturday);一月中的第8 天;一年中的第221 天。

4. MySQL week... 函数:week(), weekofyear(), dayofweek(), weekday(), yearweek()set @dt = '2008-08-08';select week(@dt); -- 31select week(@dt,3); -- 32select weekofyear(@dt); -- 32select dayofweek(@dt); -- 6select weekday(@dt); -- 4select yearweek(@dt); -- 200831MySQL week() 函数,可以有两个参数,具体可看手册。

weekofyear() 和week() 一样,都是计算“某天”是位于一年中的第几周。

weekofyear(@dt) 等价于week(@dt,3)。

MySQL weekday() 函数和dayofweek() 类似,都是返回“某天”在一周中的位置。

相关文档
最新文档