知识分享之数据库(2)
日期与时间类型
MySQL提供的表示日期和时间的数据类型分别是 :YEAR、DATE、TIME、DATETIME 和 TIMESTAMP。
YEAR类型
YEAR类型用于表示年份,在MySQL中,可以使用以下三种格式指定YEAR类型 的值。
1、使用4位字符串或数字表示,范围为’1901’—'2155’或1901—2155。例如,输人 ‘2019’或2019插人到数据库中的值均为2019。
2、使用两位字符串表示,范围为’00’—‘99’。其中,‘00’—'69’范围的值会被转换为 2000—2069范围的YEAR值,‘70’—'99’范围的值会被转换为1970—1999范围的YEAR 值。例如,输人’19’插人到数据库中的值为2019。
3、使用两位数字表示,范围为1—99。其中,1—69范围的值会被转换为2001— 2069范围的YEAR值,70—99范围的值会被转换为1970—1999范围的YEAR值。例 如,输人19插入到数据库中的值为2019。 请注意:当使用YEAR类型时,一定要区分’0’和0。因为字符串格式的’0’表示的YEAR值是2000而数字格式的0表示的YEAR值是0000。
DATE类型
DATE类型用于表示日期值,不包括时间部分。在MySQL中,可以使用以下四种格式指定DATA类型的值
1、以‘YYYY-MM-DD'或者’YYYYMMDD'字符串格式表示。 例如,输入‘2014-01-21’或‘20140121’,插入数据库中的日期都是2014-02-21。
2、以’YY-MM-DD’或者‘YYMMDD’字符串格式表示。YY表示的是年,范围为‘00‘~’99’,其中‘00’~’69’范围的值会被转换为2000~2069范围的值,‘70’~‘99’范围的值会被转化为1970~1999范围的值。 例如,输入‘14-01-21’或者‘140121’,插入数据库中的日期都是2014-01-21.
3、以YY-MM-DD或者YYMMDD数字格式表示。 例如,输入14-021-21或140121,插入数据库中的日期都为2014-01-21.
4、使用CURRENT_DATE或者NOW()表示当前系统日期
TIME类型
TIME类型用于表示时间值,它的显示形式一般为HH:MM:SS,其中,HH表示小时, MM表示分,SS表示秒。在MySQL中,可以使用以下3种格式指定TIME类型的值。
1、以’D HH:MM:SS’字符串格式表示。其中,D表示日可取0—34之间的值, 插人数据时,小时的值等于(DX24+HH)。 例如,输入’2 11:30:50’插人数据库中的日期为59:30:50。
2、以’HHMMSS’字符串格式或者HHMMSS数字格式表示。 例如,输人’115454’或115454,插入数据库中的日期为11:54:54 3、使用CURRENT_TIME或NOW()输人当前系统时间。
DATETIME类型
DATETIME类型用于表示日期和时间,它的显示形式为’YYYY-MM-DD HH: MM:SS’,其中,YYYY表示年,MM表示月,DD表示日,HH表示小时,MM表示分,SS 表示秒。
1、以’YYYY-MM-DD HH:MM:SS’或者’YYYYMMDDHHMMSS’字符串格式表示的日期和时间,取值范围为’1000-01-01 00:00:00’—‘9999-12-3 23:59:59’。例如,输人’2019-01-22 09:01:23’或 ‘20140122_0_90123’插人数据库中的 DATETIME 值都为 2019-01-22 09:01:23。
2、以’YY-MM-DD HH:MM:SS’或者’YYMMDDHHMMSS’字符串格式表示的日期和时间,其中YY表示年,取值范围为’00’—‘99’。与DATE类型中的YY相同,‘00’— '69’范围的值会被转换为2000—2069范围的值,‘70’—'99’范围的值会被转换为1970—1999范围的值。
3、以YYYYMMDDHHMMSS或者YYMMDDHHMMSS数字格式表示的日期 和时间。例如,插入20190122090123或者190122090123,插人数据库中的DATETIME值都 为 2019-01-22 09:01:23。
4、使用NOW来输人当前系统的日期和时间。
TIMESTAMP类型
TIMESTAMP类型用于表示日期和时间,它的显示形式与DATETIME相同但取值范围比DATETIME小。
在此,介绍几种TIMESTAMP类型与DATATIME类型不同的形式:
1、使用CURRENT_TIMESTAMP输人系统当前日期和时间。
2、输人NULL时系统会输人系统当前日期和时间。
3、无任何输人时系统会输入系统当前日期和时间。
时间函数:
SELECT NOW(); 当前年月日时间 2022-4-15 13:35:50
SELECT DAY (NOW()); 当前月份的第几天 15
SELECT DATE (NOW()); 当前年月日 2022-4-15
SELECT TIME (NOW()); 当前时间 13:35:50
SELECT YEAR (NOW()); 当前年份 2022
SELECT MONTH (NOW()); 当前月份 4
SELECT CURRENT_DATE(); 当前年月 2022-4-15
SELECT CURRENT_TIME(); 当前时间 13:35:50
SELECT CURRENT_TIMESTAMP(); 当前年月日时间 2022-4-15 13:35:50
SELECT ADDTIME('14:23:12','01:02:01'); 两个时间相加 15:25:13
SELECT DATE_ADD(NOW(),INTERVAL 1 DAY); 当前时间的后一天2022-4-16 13:35:50
SELECT DATE_ADD(NOW(),INTERVAL 1 MONTH);当前时间的后一月2022-5-15 13:35:50
SELECT DATE_SUB(NOW(),INTERVAL 1 DAY); 当前时间的前一天2022-4-14 13:35:50
SELECT DATE_SUB(NOW(),INTERVAL 1 MONTH);当前时间的前一月2022-3-15 13:35:50
SELECT DATEDIFF('2019-07-22','2019-05-05'); 两个时间点中间有多少天78