>  기사  >  데이터 베이스  >  mysql에서는 생일에 어떤 유형이 사용됩니까?

mysql에서는 생일에 어떤 유형이 사용됩니까?

青灯夜游
青灯夜游원래의
2022-11-11 15:57:268362검색

mysql에서 사용 가능한 생일 유형: 1. DATE 유형, 표시할 수 있는 날짜 형식은 "YYYY-MM-DD"이며 저장에 3바이트가 필요합니다. 2. DATETIME 유형, 표시할 수 있는 날짜 형식은 다음과 같습니다. "YYYY- MM-DD HH:MM:SS", 8바이트 저장 필요 3. TIMESTAMP 유형, 표현 가능한 날짜 형식은 "YYYY-MM-DD HH:MM:SS", 4바이트 저장 필요 .

mysql에서는 생일에 어떤 유형이 사용됩니까?

이 튜토리얼의 운영 환경: windows7 시스템, mysql8 버전, Dell G3 컴퓨터.

MySQL에서 생일에 적합한 날짜 및 시간 유형

유형 이름 날짜 형식 날짜 범위 저장소 요구 사항
DATE YYYY- MM-DD 1000- 01-01 ~ 9999-12-3 3바이트
DATETIME YYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00 ~ 9999-12-31 23: 59:59 8바이트
TIMESTAMP YYYY-MM-DD HH:MM:SS 1980-01-01 00:00:01 UTC ~ 2040-01-19 03:14:07 UTC 4바이트

DATE 유형

DATE 유형은 시간 부분 없이 날짜 값만 필요한 경우에 사용되며 저장에 3바이트가 필요합니다. 날짜 형식은 'YYYY-MM-DD'이며, 여기서 YYYY는 연도, MM은 월, DD는 일을 나타냅니다.

DATE 유형 필드에 값을 할당할 때 DATE의 날짜 형식을 준수하는 한 문자열 유형 또는 숫자 유형 데이터를 사용하여 삽입할 수 있습니다. 아래와 같이

  • 'YYYY-MM-DD' 또는 'YYYYMMDD' 문자 형식으로 표현되는 날짜이며, 값 범위는 '1000-01-01' ~ '9999-12-3'입니다. 예를 들어 '2015-12-31' 또는 '20151231'을 입력하면 데이터베이스에 삽입되는 날짜는 2015-12-31이 됩니다.

  • 날짜를 'YY-MM-DD' 또는 'YYMMDD' 문자열 형식으로 표현합니다. 여기서 YY는 두 자리 연도 값을 나타냅니다. MySQL은 두 자리 연도 값에 대한 규칙을 해석합니다. '00~69' 범위의 연도 값은 '2000~2069'로 변환되고, '70~99' 범위의 연도 값은 으로 변환됩니다. '1970~1999'. 예를 들어, '15-12-31'을 입력하면 데이터베이스에 삽입된 날짜는 2015-12-31이고, '991231'을 입력하면 데이터베이스에 삽입된 날짜는 1999-12-31입니다.

  • YYMMDD 숫자 형식으로 표현된 날짜는 앞선 것과 유사하게 00~69 범위의 연도 값은 2000~2069, 80~99 범위의 연도 값은 으로 변환됩니다. 1980~1999. 예를 들어 151231을 입력하면 데이터베이스에 삽입된 날짜는 2015-12-31이고, 991231을 입력하면 데이터베이스에 삽입된 날짜는 1999-12-31입니다.

  • 현재 시스템 날짜를 삽입하려면 CURRENT_DATE 또는 NOW()를 사용하세요.

팁: MySQL은 "완화된" 구문을 허용합니다. 구두점은 날짜 부분 사이의 구분 기호로 사용할 수 있습니다. 예를 들어 '98-11-31', '98.11.31', '98/11/31' 및 '98@11@31'은 동일하며 이러한 값은 데이터베이스에 올바르게 삽입됩니다.

DATETIME 유형

DATETIME 유형은 날짜와 시간 정보를 모두 포함해야 하는 값에 사용되며 저장에는 8바이트가 필요합니다. 날짜 형식은 'YYYY-MM-DD HH:MM:SS'이며, 여기서 YYYY는 연도, MM은 월, DD는 일, HH는 시간, MM은 분, SS는 초를 나타냅니다.

DATETIME 유형의 필드에 값을 할당할 때 아래와 같이 DATETIME의 날짜 형식을 준수하는 한 문자열 유형 또는 숫자 유형 데이터를 사용하여 삽입할 수 있습니다.

  • 'YYYY-MM을 사용합니다. -DD ​​HH:MM :SS' 또는 'YYYYMMDDHHMMSS' 문자열 형식으로 표현되는 날짜이며, 값 범위는 '1000-01-01 00:00:00' ~ '9999-12-3 23:59:59'입니다. 예를 들어 '2014-12-31 05:05:05' 또는 '20141231050505'를 입력하면 데이터베이스에 삽입되는 DATETIME 값은 2014-12-31 05:05:05가 됩니다.

  • 'YY-MM-DD HH:MM:SS' 또는 'YYMMDDHHMMSS' 문자열 형식으로 표현되는 날짜입니다. 여기서 YY는 두 자리 연도 값을 나타냅니다. 이전과 동일하게 '00~79' 범위의 연도 값은 '2000~2079'로 변환되고, '80~99' 범위의 연도 값은 '1980~1999'로 변환됩니다. 예를 들어, '14-12-31 05:05:05'를 입력하면 데이터베이스에 삽입된 DATETIME은 2014-12-31 05:05:05이고, 141231050505를 입력하면 데이터베이스에 삽입된 DATETIME은 2014입니다. -12-31 05:05:05 .

  • YYYYMMDDHHMMSS 또는 YYMMDDHHMMSS 숫자 형식으로 표현된 날짜 및 시간입니다. 예를 들어, 20141231050505를 입력하면 데이터베이스에 삽입된 DATETIME은 2014-12-31 05:05:05이고, 140505050505를 입력하면 데이터베이스에 삽입된 DATETIME은 2014-12-31 05:05:05입니다.

팁: MySQL은 "완화된" 구문을 허용합니다. 구두점은 날짜 부분이나 시간 부분 사이의 구분 기호로 사용할 수 있습니다. 예를 들어 '98-12-31 11:30:45', '98.12.31 11+30+35', '98/12/31 11*30*45' 및 '98@12@31 11^30^ 45'는 동일하며 이 값은 데이터베이스에 올바르게 삽입될 수 있습니다.

TIMESTAMP 유형

TIMESTAMP는 DATETIME과 동일한 표시 형식을 가지며 표시 너비는 19자로 고정되고 날짜 형식은 YYYY-MM-DD HH:MM:SS이며 저장에 4바이트가 필요합니다. 다만, TIMESTAMP 컬럼의 값 범위는 DATETIME의 값 범위인 '1970-01-01 00:00:01'UTC~'2038-01-19 03:14:07'UTC보다 작다. 데이터를 삽입할 때 유효한 값 범위 내에 있는지 확인하십시오.

팁: 협정 세계시(영어: 협정 세계시, 프랑스어: Temps Universel Coordonna)는 세계 통일시(Universal Unified Time), 세계 표준시(Universal Standard Time), 국제 협정시(International Coordinated Time)라고도 합니다. 영어(CUT)와 프랑스어(TUC) 약어가 다르며 절충안으로 약어는 UTC입니다.

TIMESTAMP 및 DATETIME은 다양한 저장 바이트 및 지원 범위 외에도 가장 큰 차이점은 다음과 같습니다.

  • DATETIME 날짜 데이터를 저장할 때 실제 입력 형식으로 저장됩니다. 즉, 입력되는 모든 내용이 저장됩니다.

  • TIMESTAMP 값의 저장은 UTC(Universal Coordinated Time) 형식으로 저장되며, 검색 시 현재 시간대로 다시 변환됩니다. 즉, 쿼리 시 현재 시간대에 따라 표시되는 시간 값이 다릅니다.

팁: DATETIME 또는 TIMESTAMP 객체에 DATE 값을 할당하면 결과 값의 시간 부분이 '00:00:00'으로 설정되므로 DATE 값에는 시간 정보가 포함되지 않습니다. DATE 객체에 DATETIME 또는 TIMESTAMP 값이 할당되면 결과 값의 시간 부분이 제거되므로 DATE 값에는 시간 정보가 포함되지 않습니다.

시간 및 날짜 함수

  • 시스템 시간 함수 now(), current_timestamp, sysdate()

이 세 가지 함수는 시스템 시간을 반환하고 차이점을 확인하며 동시에 time 이 세 가지 함수에 접근하여 얻은 결과는 동일하지만, 몇 초간 기다린 후에는 결과가 다릅니다.

mysql에서는 생일에 어떤 유형이 사용됩니까?

위 그림을 보면 sysdate()가 반환한 시간이 now()와 다르며 current_timestamp가 2초 느린 것을 알 수 있습니다. 그 이유는 다음과 같습니다.

current_timestamp는 now의 동의어이며, 둘은 같습니다.

sysdate() 함수는 현재 함수가 실행되는 시간을 반환하고, now()는 sql 문이 실행되는 시간을 반환합니다.

  • 시간 덧셈 및 뺄셈 함수

① date_add 및 date_sub

date_add(date , 간격 expr 단위) 및 date_sub(date, 간격 expr 단위)는 각각 증가 및 감소를 나타냅니다.

select
date_add('2017-12-18 22:51:00', interval 1 second),
date_add('2017-12-18 22:51:00', interval 1 minute),
date_add('2017-12-18 22:51:00', interval 1 hour),
date_add('2017-12-18 22:51:00', interval 1 day),
date_add('2017-12-18 22:51:00', interval 1 month),
date_add('2017-12-18 22:51:00', interval 1 year);

윤달이 발생할 때 date_add를 처리하는 방법은 무엇입니까? MySQL은 윤달인 경우 2월 29일을 반환하고, 윤달이 아닌 경우 2월 28일을 반환합니다.

select date_add('2016-02-29 22:51:00', interval -1 year),
date_add('2016-02-29 22:51:00', interval 4 year);
2015-02-28 22:51:002020-02-29 22:51:00

② datediff 및 timediff

  • datediff(date1, date2): 두 날짜 date1 - date2를 빼고 일 수를 반환합니다. select datediff('2016-02-29 22:51:00','2016-03-29 22:51:00');

  • timediff(time1, time2): 두 날짜 time1 - time2를 빼고, 시차(형식: 838:59:59). select timediff('2016-02-29 22:51:00','2016-01-29 22:51:00');

참고: timediff(time1,time2) 함수의 두 가지 매개 변수 유형은 다음과 같아야 합니다. 동일하다.

3 타임스탬프 증가, 감소, 변환 기능

  • timestamp(date) -- 날짜를 timestamp로timestamp(date)  -- date to timestamp

  • timestamp(date, time) -- date + time

  • timestampadd(unit,interval,datetime_expr)   -- 类似date_add,对时间按单位进行增加,减少

select timestampadd(second, 60, '2017-12-18 00:00:00');
select timestampadd(minute, 60, '2017-12-18 00:00:00');
select timestampadd(hour, 60, '2017-12-18 00:00:00');
  • timestampdiff(unit,datetime_expr1,datetime_expr2)

timestamp(날짜, 시간) -- 날짜 + time

timestampadd(unit,interval,datetime_expr) -- date_add와 유사하며, 단위별로 시간을 늘리거나 줄입니다

select timestampdiff(second, '2017-12-18 00:00:00','2017-12-18 12:00:00');
select timestampdiff(hour, '2017-11-18 00:00:00','2017-12-18 12:00:00');
select timestampdiff(day, '2017-10-17 00:00:00','2017-11-18 23:00:00');
timestampdiff(unit,datetime_expr1, datetime_expr2 ) -- 두 시간의 차이를 계산하여 초, 분, 시간, 일, 월, 년, 주를 계산할 수 있습니다

select date_format(now(),'%Y%m%d'),
date_format(now(),'%Y-%m-%d'),
date_format(now(),'%Y/%m/%d'),
date_format(now(),'%m/%d/%Y');

4 date_format 함수

date_format 함수는 주로 날짜 형식을 지정하는 데 사용됩니다

select *
from employees
where date_format(birth_date,'%Y-%m-%d') = '1961-08-03';

참고: 데이터를 쿼리할 때 날짜 필드에 이 기능을 사용하면 최적화 프로그램이 해당 필드의 인덱스를 사용하지 않고 인덱스를 통해 데이터를 쿼리할 수도 없으므로 쿼리 효율성이 매우 낮습니다. 다음 쿼리 문에서birth_date 필드에 인덱스가 있는 경우 date_format 함수 사용으로 인해 인덱스가 유효하지 않습니다. 🎜
-- 上一年,当年,下一年生日与当前时间差最小的年就是用户最近的生日
select emp_no,first_name,last_name,birth_date,today,if(last_diff<=cur_diff and last_diff<=next_diff, last,if(cur_diff
from
(
-- 计算当前时间与上一年,当年,下一年生日的时间差
select emp_no,first_name,last_name,birth_date,datediff(today,last) as last_diff,abs(datediff(today,cur)) as cur_diff,abs(datediff(today,next)) as next_diff,
last,cur,next,today
from
(
-- 用户最近的生日可能分布在前一年,当年,下一年。根据年度差year_diff计算上一年,当年,下一年用户的生日
select emp_no,first_name,last_name,birth_date,
DATE_ADD(birth_date,INTERVAL year_diff year) as cur,
DATE_ADD(birth_date,INTERVAL year_diff+1 year) as next,
DATE_ADD(birth_date,INTERVAL year_diff-1 year) as last,
today
from
(
-- 获取当前事前与出生日期的年度差 year_diff
select emp_no,first_name,last_name,birth_date,(year(NOW())-year(birth_date)) as year_diff, NOW() as today
from employees
) a
) b
) c
🎜🎜🎜날짜의 고전적인 프로그래밍 문제🎜🎜🎜🎜사용자의 최신 생일 계산(과거 및 미래 포함) 것) 생년월일과 현재 날짜를 기준으로 )🎜rrreee🎜【관련 추천:🎜mysql 비디오 튜토리얼🎜】🎜

위 내용은 mysql에서는 생일에 어떤 유형이 사용됩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.