시간 값을 나타내는 DATE 및 시간 유형은 DATETIME, DATE, TIMESTAMP, TIME 및 YEAR입니다. 각 시간 유형에는 유효한 값의 범위와 MySQL이 표현할 수 없는 잘못된 값을 지정할 때 사용되는 "0" 값이 있습니다. TIMESTAMP 유형에는 나중에 설명할 독점적인 자동 업데이트 기능이 있습니다.
잘못된 날짜를 삽입하려고 하면 MySQL에서 경고나 오류가 발생합니다. ALLOW_INVALID_DATES SQL 모드를 사용하여 MySQL이 '1999-11-31'과 같은 특정 날짜를 허용하도록 할 수 있습니다. 향후 처리를 위해 사용자가 데이터베이스(예: 웹 양식)에 지정한 "잘못되었을 수 있는" 값을 저장하려는 경우에 유용합니다. 이 모드에서 MySQL은 월 범위가 0~12이고 일 범위가 0~31인지 확인합니다. MySQL에서는 DATE 또는 DATETIME 열에 일/월 및 일이 0인 날짜를 저장할 수 있으므로 이러한 범위에는 0이 포함될 수 있습니다. 이는 응용 프로그램이 정확한 날짜를 모르는 생일을 저장해야 할 때 유용합니다. 이 경우 날짜를 '1999-00-00' 또는 '1999-01-00'으로 저장하면 됩니다. DATE_SUB() 또는 DATE_ADD와 같이 완전한 날짜가 필요한 함수는 해당 날짜를 저장하면 올바른 결과를 제공하지 않습니다. (날짜에 0이 표시되는 것을 원하지 않으면 NO_ZERO_IN_DATESQL 모드를 사용할 수 있습니다).
MySQL에서는 '0000-00-00'을 "의사 날짜"로 저장할 수도 있습니다(NO_ZERO_DATE SQL 모드를 사용하지 않는 경우). 이는 NULL 값을 사용하는 것보다 어떤 상황에서는 더 편리합니다(그리고 데이터와 인덱스가 더 적은 공간을 차지합니다).
SQL_mode 시스템 변수를 해당 모드 값으로 설정하면 MySQL이 어떤 종류의 날짜를 지원하길 원하는지 더 명확하게 알 수 있습니다.
날짜 및 시간 유형으로 작업할 때 다음 사항에 유의해야 합니다.
· MySQL은 표준 출력 형식으로 지정된 날짜 또는 시간 유형의 값을 검색하지만 지정하는 각 값을 해석하는 것이 가장 좋습니다. 입력 값 형식(예: 날짜 또는 시간 유형에 할당되거나 비교되는 값을 지정하는 경우) 다음 섹션에 설명된 형식만 지원됩니다. 유효한 값을 제공하시기 바랍니다. 다른 형식의 값을 사용하면 예상치 못한 결과가 발생할 수 있습니다.
· 두 자리 연도 값이 포함된 날짜는 세기를 알 수 없기 때문에 모호합니다. MySQL은 다음 규칙을 사용하여 두 자리 연도 값을 해석합니다.
o 70-99 범위의 연도 값은 1970-1999로 변환됩니다.
o 00-69 범위의 연간 값은 2000-2069로 변환됩니다.
· MySQL은 여러 형식으로 값을 해석하려고 시도하지만 날짜는 일반적으로 월-일-년이 아닌 항상 연-월-일 순서(예: '98-09-04')입니다. 또는 일-월-년 순서(예: '09-04-98', '04-09-98')
· MySQL은 값이 숫자 컨텍스트에서 사용되는 경우 날짜 또는 시간 유형 값을 자동으로 숫자로 변환하고 그 반대의 경우도 마찬가지입니다.
· MySQL이 해당 유형에 대해 범위를 벗어나거나 잘못된 날짜 또는 시간 유형 값을 발견하면(이 섹션 시작 부분에 설명된 대로) 해당 값을 해당 클래스의 "0" 값으로 변환합니다. . 한 가지 예외는 범위를 벗어난 TIME 값이 TIME 범위의 해당 끝점으로 잘린다는 것입니다.
다음 표는 다양한 "0" 값의 형식을 보여줍니다. NO_ZERO_DATE SQL 모드가 활성화된 경우 이 값을 사용하면 경고가 생성됩니다.
컬럼 유형 "0" 값
DATETIME '0000-00-00 00:00:00'
DATE '0000-00-00'
TIMESTAMP 00000000000000
TIME '00:00:00'
YEAR 0000
· "0" 값은 특별한 값이지만, 저장하거나 참조하려면 표에 표시된 항목을 표시하세요. 또한 '0' 또는 0 값을 사용하여 저장하거나 참조할 수 있으므로 작성하기가 더 쉽습니다.
· MyODBC에서 사용되는 "0" 날짜 또는 시간 값은 ODBC가 이러한 값을 처리할 수 없기 때문에 MyODBC 2.50.12 이상에서는 자동으로 NULL로 변환됩니다.
1. DATETIME, DATE, TIMESTAMP 타입
1. MySQL 4.1 이후의 TIMESTAMP 속성
DATETIME, DATE, TIMESTAMP 타입은 서로 연관되어 있습니다. 이 섹션에서는 이들의 특징, 유사점 및 차이점을 설명합니다.
날짜와 시간 정보를 모두 포함하는 값이 필요한 경우 DATETIME 유형을 사용하세요. MySQL은 'YYYY-MM-DD HH:MM:SS' 형식으로 DATETIME 값을 검색하여 표시합니다. 지원되는 범위는 '1000-01-01 00:00:00' ~ '9999-12-31 23:59:59' 입니다. ("지원됨"은 이전 값이 작동할 수 있지만 보장할 수 없음을 의미합니다.)
DATE 타입은 시간 부분 없이 날짜 값만 필요한 경우에 사용해야 합니다. MySQL은 'YYYY-MM-DD' 형식으로 DATE 값을 검색하여 표시합니다. 지원되는 범위는 '1000-01-01'~'9999-12-31'입니다.
TIMESTAMP 열 유형의 속성은 고정되지 않으며 MySQL 버전과 서버가 실행 중인 SQL 모드에 따라 달라집니다. 이러한 속성은 이 섹션의 뒷부분에서 설명됩니다.
DATETIME, DATE 및 TIMESTAMP 값은 일반적인 형식을 사용하여 지정할 수 있습니다:
· 'YYYY-MM-DD HH:MM:SS' 또는 'YY-MM-DD HH: MM:SS '형식 문자열입니다. "완화된" 구문이 허용됩니다. 구두점 문자는 날짜 부분이나 시간 부분 사이의 구분 기호로 사용될 수 있습니다. 예를 들어 '98-12-31 11:30:45', '98.12.31 11+30+45', '98/12/31 11*30*45' 및 '98@12@31 11^30^ 45'는 동일합니다.
· 'YYYY-MM-DD' 또는 'YY-MM-DD' 형식의 문자열입니다. 여기서는 "Relaxed" 구문도 허용됩니다. 예를 들어 '98-12-31', '98.12.31', '98/12/31' 및 '98@12@31'은 동일합니다.
· 구분 기호 없이 'YYYYMMDDHHMMSS' 또는 'YYMMDDHHMMSS' 형식의 문자열(문자열이 날짜 유형에 의미가 있다고 가정). 예를 들어 '19970523091528'과 '970523091528'은 '1997-05-23 09:15:28'로 해석되지만 '971122129015'는 불법(의미 없는 분 부분이 있음)이므로 '0000-00-00 00'이 됩니다. :00:00'.
· 구분 기호가 없는 'YYYYMMDD' 또는 'YYMMDD' 형식의 문자열(문자열이 날짜 유형에 의미가 있다고 가정). 예를 들어 '19970523'과 '970523'은 '1997-05-23'으로 해석되지만 '971332'는 불법(의미 없는 월과 일 부분이 있음)이므로 '0000-00-00''이 됩니다.
· YYYYMMDDHHMMSS 또는 YYMMDDHHMMSS 형식의 숫자(숫자가 날짜 유형에 적합하다고 가정). 예를 들어 19830905132800 및 830905132800은 '1983-09-05 13:28:00'으로 해석됩니다.
· YYYYMMDD 또는 YYMMDD 형식의 숫자(숫자가 날짜 유형에 적합하다고 가정). 예를 들어 19830905 및 830905는 '1983-09-05'로 해석됩니다.
· 함수가 반환한 결과 값은 NOW() 또는 CURRENT_DATE와 같은 DATETIME, DATE 또는 TIMESTAMP 컨텍스트에 적합합니다.
잘못된 DATETIME, DATE 또는 TIMESTAMP 값은 해당 유형('0000-00-00 00:00:00', '0000-00-00' 또는 00000000000000)의 "0" 값으로 변환됩니다. ).
날짜 부분 구분 기호가 포함된 문자열 값의 경우 일 및 월 값이 10 미만이면 두 자리를 지정할 필요가 없습니다. '1979-6-9'는 '1979-06-09'와 동일합니다. 마찬가지로 시간 부분 구분 기호가 포함된 문자열 값의 경우 시, 분, 초 값이 10보다 작으면 두 자리를 지정할 필요가 없습니다. '1979-10-30 1:2:3'은 '1979-10-30 01:02:03'과 동일합니다.
숫자값은 6, 8, 12, 14자리여야 합니다. 숫자 길이가 8자리 또는 14자리인 경우 YYYYMMDD 또는 YYYYMMDDHHMMSS 형식으로 간주되며 처음 4자리는 연도를 나타냅니다. 숫자가 6자리 또는 12자리인 경우 YYMMDD 또는 YYMMDDHHMMSS 형식으로 간주되며 처음 2자리는 연도를 나타냅니다. 다른 숫자는 가장 가까운 길이까지 0으로 채워진 것처럼 해석됩니다.
부정 문자열로 지정된 값은 주어진 길이를 사용하여 해석됩니다. 문자열 길이가 8자 또는 14자인 경우 처음 4자리는 연도를 나타냅니다. 그렇지 않은 경우 처음 두 자리는 연도를 나타냅니다. 문자열 내에서 발생하는 각 구성요소를 왼쪽에서 오른쪽으로 해석하여 연도, 월, 일, 시, 분, 초 값을 알아냅니다. 즉, 6자보다 짧은 문자열은 사용하면 안 됩니다. 예를 들어, 1999년 3월을 의미한다고 생각하여 '9903'을 지정하면 MySQL은 테이블에 "0" 날짜 값을 삽입합니다. 연도와 월의 값이 99와 03인데 일 부분이 완전히 빠졌기 때문에 그 값은 법적 날짜가 아니기 때문이다. 그러나 누락된 월 또는 일 부분을 나타내기 위해 명시적으로 0 값을 지정할 수 있습니다. 예를 들어 '990300'을 사용하여 '1999-03-00' 값을 삽입할 수 있습니다.
어느 정도까지는 한 날짜 유형의 값을 다른 날짜 유형에 할당할 수 있습니다. 그러나 값이 변경되거나 일부 정보가 손실될 수 있습니다.
· DATETIME 또는 TIMESTAMP 객체에 DATE 값을 할당하면 결과 값의 시간 부분이 '00:00:00'으로 설정됩니다. DATE 값에는 시간 정보가 포함되어 있지 않습니다.
· DATE 객체에 DATETIME 또는 TIMESTAMP 값을 할당하면 DATE 값에 시간 정보가 포함되어 있지 않으므로 결과 값의 시간 부분이 제거됩니다.
· DATETIME, DATE, TIMESTAMP 값은 동일한 형식을 사용하여 지정할 수 있지만 값 유형에 따라 범위가 다르다는 점을 기억하세요. 예를 들어 TIMESTAMP 값은 1970년 이전이거나 2037년 이후일 수 없습니다. 이는 '1968-01-01'과 같은 날짜가 DATETIME 또는 DATE 값에는 유효하지만 TIMESTAMP 값에는 유효하지 않으며 해당 객체에 할당되면 0으로 변환됨을 나타냅니다.
날짜 값을 지정할 때 주의할 점:
· 문자열로 지정된 값에 허용되는 엄격하지 않은 형식은 기만적일 수 있습니다. 예를 들어 '10:11:12' 값은 ':' 구분 기호로 인해 시간 값처럼 보일 수 있지만 날짜 컨텍스트 값에 사용되면 '2010-11-12' 연도로 해석됩니다. '10:45:15' 값은 '45'가 법정 월이 아니기 때문에 '0000-00-00'으로 변환됩니다.
· 비엄격 모드에서 MySQL 서버는 날짜의 유효성에 대한 기본 검사만 수행합니다. 연도, 월, 일의 범위는 각각 1000~9999, 00~12, 00~31입니다. 이 범위를 벗어나는 부분을 포함하는 모든 날짜는 '0000-00-00'으로 변환됩니다. '2002-04-31'과 같은 잘못된 날짜를 저장할 수는 있습니다. 엄격 모드를 사용하지 않을 때 날짜가 유효한지 확인하려면 애플리케이션을 확인해야 합니다.
엄격 모드에서는 잘못된 날짜가 허용되지 않으며 변환되지 않습니다.
· 두 자리 연도 값이 포함된 날짜는 세기를 알 수 없기 때문에 모호합니다. MySQL은 다음 규칙을 사용하여 두 자리 연도 값을 해석합니다.
o 00-69 범위의 연도 값은 2000-2069로 변환됩니다.
o 70-99 범위의 연간 값은 1970-1999로 변환됩니다.
1.1. MySQL 4.1 이후의 TIMESTAMP 속성
참고: 이전 버전의 MySQL(4.1 이전)에서는 TIMESTAMP 열 유형의 속성이 이 섹션에 설명된 것과 여러 면에서 크게 달랐습니다. MySQL 5.1에서 작동하도록 이전 TIMESTAMP 데이터를 변환해야 하는 경우 자세한 내용은 MySQL 4.1 참조 설명서를 참조하세요.
TIMESTAMP 열의 표시 형식은 DATETIME 열의 표시 형식과 동일합니다. 즉, 표시 너비는 19자로 고정되고 형식은 YYYY-MM-DD HH:MM:SS입니다.
MySQL 서버는 MAXDB 모드에서도 실행될 수 있습니다. 서버가 이 모드에서 실행 중이면 TIMESTAMP는 DATETIME과 같습니다. 즉, 테이블 생성 시 서버가 MAXDB 모드로 실행 중이면 TIMESTAMP 컬럼이 DATETIME 컬럼으로 생성된다. 결과적으로 열은 DATETIME 표시 형식을 사용하고, 값 범위가 동일하며, 현재 날짜 및 시간으로 자동으로 초기화되거나 업데이트되지 않습니다.
MAXDB 모드를 활성화하려면 서버를 시작할 때 --sql-mode=MAXDB 서버 옵션을 사용하거나 전역 sql_mode 변수를 설정하여 런타임 시 SQL 서버 모드를 MAXDB로 설정하세요.
mysql> SET GLOBAL sql_mode=MAXDB;
클라이언트는 다음과 같이 연결을 위해 MAXDB 모드에서 서버를 실행할 수 있습니다.
mysql> SET SESSION sql_mode=MAXDB;
MySQL은 일 또는 월 열에 0을 포함하거나 잘못된 날짜 값을 포함하는 타임스탬프 값을 허용하지 않습니다. . 이 규칙의 유일한 예외는 특수 값 '0000-00-00 00:00:00'입니다.
TIMESTAMP를 초기화하고 업데이트할 시기와 초기화하고 업데이트할 열을 매우 유연하게 결정할 수 있습니다.
· 현재 타임스탬프를 기본값으로 지정하고 자동으로 업데이트되는 값을 지정할 수 있습니다. 하지만 하나만 선택할 수도 있고 둘 다 선택할 수도 없습니다. (한 열이 하나의 동작을 선택하고 다른 열이 다른 동작을 선택하는 것은 불가능합니다.)
· 현재 날짜 및 시간으로 자동으로 초기화되거나 업데이트되는 TIMESTAMP 열을 지정할 수 있습니다. 첫 번째 TIMESTAMP 열은 더 이상 필요하지 않습니다.
아래에 설명된 정보는 MAXDB 모드를 활성화하지 않고 생성된 테이블의 TIMESTAMP 열에만 적용된다는 점에 유의하세요. (위에서 언급한 것처럼 MAXDB 모드를 사용하면 열이 DATETIME 열로 생성됩니다.) TIMESTAMP 컬럼의 초기화 및 업데이트를 제어하는 규칙은 다음과 같습니다.
· 테이블의 첫 번째 TIMESTAMP 컬럼이 DEFAULT 값으로 지정된 경우 무시할 수 없습니다. 기본값은 CURRENT_TIMESTAMP 또는 상수 날짜 및 시간 값일 수 있습니다.
· DEFAULT NULL은 첫 번째 TIMESTAMP 열의 DEFAULT CURRENT_TIMESTAMP와 동일합니다. 다른 TIMESTAMP 열의 경우 DEFAULT NULL은 DEFAULT 0으로 처리됩니다.
· 테이블의 모든 TIMESTAMP 열은 현재 타임스탬프 및/또는 업데이트로 자동 초기화되도록 설정할 수 있습니다.
· CREATE TABLE 문에서 다음 방법 중 하나로 첫 번째 TIMESTAMP 열을 선언할 수 있습니다.
o 기본값을 사용하려면 DEFAULT CURRENT_TIMESTAMP 및 ON UPDATE CURRENT_TIMESTAMP 절을 사용하세요. 현재 타임스탬프가 자동으로 업데이트됩니다.
o DEFAULT CURRENT_TIMESTAMP ON UPDATECURRENT_TIMESTAMP와 마찬가지로 DEFAULT 또는 ON UPDATE 절을 사용하지 않습니다.
o ON UPDATE 절 대신 DEFAULT CURRENT_TIMESTAMP 절을 사용합니다. 기본값은 현재 타임스탬프를 사용하지만 자동으로 업데이트되지 않습니다.
o DEFAULT 절은 없지만 ON UPDATE CURRENT_TIMESTAMP 절이 있는 경우 열의 기본값은 0이며 자동으로 업데이트됩니다.
o 상수 DEFAULT 값을 사용하고 제공된 기본값이 나열됩니다. 열에 ON UPDATE CURRENT_TIMESTAMP 절이 있으면 자동으로 업데이트되고 그렇지 않으면 업데이트되지 않습니다.
즉, 초기 값과 자동 업데이트 값에 현재 타임스탬프를 사용하거나 둘 중 하나를 사용하거나 둘 다 사용하지 않을 수 있습니다. (예를 들어 ON UPDATE를 지정하면 열을 자동으로 초기화하지 않고도 자동 업데이트를 활성화할 수 있습니다.)
· DEFAULT 및 ON UPDATE 절에 CURRENT_TIMESTAMP, CURRENT_TIMESTAMP() 또는 NOW()를 사용할 수 있습니다. 모두 동일한 효과가 있습니다.
두 속성의 순서는 중요하지 않습니다. TIMESTAMP 열에 DEFAULT와 ON UPDATE가 모두 지정된 경우 둘 중 하나가 다른 것 앞에 올 수 있습니다.
예에서 다음 명령문은 동일합니다.
CREATE TABLE t (ts TIMESTAMP); CREATE TABLE t (ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP); CREATE TABLE t (ts TIMESTAMP ON UPDATE CURRENT_TIMESTAMP DEFAULT CURRENT_TIMESTAMP);
· 1열이 아닌 TIMESTAMP 열에 대해 자동 기본값을 지정하거나 업데이트하려면 상수 할당을 인쇄하여 첫 번째 TIMESTAMP를 인쇄해야 합니다. 자동 초기화 및 업데이트를 비활성화하는 DEFAULT 값입니다. (예를 들어 DEFAULT 0 또는 DEFAULT '2003-01-01 00:00:00'). 그런 다음 다른 TIMESTAMP 열의 경우 규칙은 DEFAULT 및 ON UPDATE 절을 무시할 수 없다는 점을 제외하고 첫 번째 TIMESTAMP 열과 동일합니다. 이렇게 하면 초기화나 업데이트가 자동으로 발생하지 않습니다.
예: 다음 명령문은 동일합니다.
CREATE TABLE t ( ts1 TIMESTAMP DEFAULT 0, ts2 TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP); CREATE TABLE t ( ts1 TIMESTAMP DEFAULT 0, ts2 TIMESTAMP ON UPDATE CURRENT_TIMESTAMP DEFAULT CURRENT_TIMESTAMP);
현재 시간대는 각 연결에 대해 설정할 수 있습니다. TIMESTAMP 값은 UTC 형식으로 저장되며, 저장 시 현재 시간대로 변환되고, 검색 시 다시 현재 시간대로 변환됩니다. 타임존 설정 값이 일정하면 저장 당시의 값을 얻을 수 있습니다. TIMESTAMP 값을 저장한 경우 시간대를 변경한 후 값을 검색해야 하며, 저장한 값과 다릅니다. 이는 양방향 변환에 동일한 시간대를 사용하지 않기 때문입니다. 현재 시간대를 time_zone 시스템 변수의 값으로 사용할 수 있습니다.
TIMESTAMP 열 정의에 NULL 속성을 포함하면 열에 NULL 값이 포함될 수 있습니다. 예:
CREATE TABLE t ( ts1 TIMESTAMP NULL DEFAULT NULL, ts2 TIMESTAMP NULL DEFAULT 0, ts3 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP );
如果未指定NULL属性,将列设置为NULL设置则会将它设置为当前的时间戳。请注意允许NULL值的TIMESTAMP列不会采用当前的时间戳,除非要么其 默认值定义为CURRENT_TIMESTAMP,或者NOW()或CURRENT_TIMESTAMP被插入到该列内。换句话说,只有使用如下定义创建,定义为 NULL的TIMESTAMP列才会自动更新:
CREATE TABLE t (ts NULLDEFAULT CURRENT_TIMESTAMP);
否则-也就是说,如果使用NULL而不是DEFAULT TIMESTAMP来定义TIMESTAMP列,如下所示...
CREATE TABLE t1 (ts NULL DEFAULT NULL); CREATE TABLE t2 (ts NULL DEFAULT '0000-00-00 00:00:00');
...则必须显式插入一个对应当前日期和时间的值。例如:
INSERT INTO t1 VALUES (NOW()); INSERT INTO t2 VALUES (CURRENT_TIMESTAMP);
2. TIME类型
MySQL以'HH:MM:SS'格式检索和显示TIME值(或对于大的小时值采用'HHH:MM:SS'格式)。TIME值的范围可以从'-838:59:59'到'838:59:59'。小时部分会因此大的原因是TIME类型不仅可以用于表示一天的时间(必须小于24小时),还可能为某个事件过去的时间或两个事件之间的时间间隔(可以大于24小时,或者甚至为负)。
你可以用各种格式指定TIME值:
· 'D HH:MM:SS.fraction'格式的字符串。还可以使用下面任何一种“非严格”语法:'HH:MM:SS.fraction'、'HH:MM:SS'、'HH:MM'、'D HH:MM:SS'、'D HH:MM'、'D HH'或'SS'。这里D表示日,可以取0到34之间的值。请注意MySQL还不保存分数。
· 'HHMMSS'格式的没有间割符的字符串,假定是有意义的时间。例如,'101112'被理解为'10:11:12',但'109712'是不合法的(它有一个没有意义的分钟部分),将变为'00:00:00'。
· HHMMSS格式的数值,假定是有意义的时间。例如,101112被理解为'10:11:12'。下面格式也可以理解:SS、MMSS、HHMMSS、HHMMSS.fraction。请注意MySQL还不保存分数。
· 函数返回的结果,其值适合TIME上下文,例如CURRENT_TIME。
对于指定为包括时间部分间割符的字符串的TIME值,如果时、分或者秒值小于10,则不需要指定两位数。'8:3:2'与'08:03:02'相同。
为TIME列分配简写值时应注意。没有冒号,MySQL解释值时假定最右边的两位表示秒。(MySQL解释TIME值为过去的时间而不是当天的时间)。例如,你可能认为'1112'和1112表示'11:12:00'(11点过12分),但MySQL将它们解释为'00:11:12'(11分,12 秒)。同样,'12'和12 被解释为 '00:00:12'。相反,TIME值中使用冒号则肯定被看作当天的时间。也就是说,'11:12'表示'11:12:00',而不是'00:11:12'。
超出TIME范围但合法的值被裁为范围最接近的端点。例如,'-850:00:00'和'850:00:00'被转换为'-838:59:59'和'838:59:59'。
无效TIME值被转换为'00:00:00'。请注意由于'00:00:00'本身是一个合法TIME值,只从表内保存的一个'00:00:00'值还不能说出原来的值是 '00:00:00'还是不合法的值。
3. YEAR类型
YEAR类型是一个单字节类型用于表示年。
MySQL以YYYY格式检索和显示YEAR值。范围是1901到2155。
可以指定各种格式的YEAR值:
· 四位字符串,范围为'1901'到'2155'。
· 四位数字,范围为1901到2155。
· 两位字符串,范围为'00'到'99'。'00'到'69'和'70'到'99'范围的值被转换为2000到2069和1970到1999范围的YEAR值。
· 两位整数,范围为1到99。1到69和70到99范围的值被转换为2001到2069和1970到1999范围的YEAR值。请注意两位整数范围与两位字符串范围稍有不同,因为你不能直接将零指定为数字并将它解释为2000。你必须将它指定为一个字符串'0'或'00'或它被解释为0000。
· 函数返回的结果,其值适合YEAR上下文,例如NOW()。
非法YEAR值被转换为0000。
4. Y2K事宜和日期类型
MySQL本身对于2000年(Y2K)是安全的,但输入给MySQL的值可能不安全。任何包含两位年值的输入都会令人模糊,因为世纪不知道。这些值必须解释为四位形式,因为MySQL内部使用四位来保存年。
对于DATETIME、DATE、TIMESTAMP和YEAR类型,MySQL使用以下规则解释含模糊年值的日期:
· 00-69范围的年值转换为2000-2069。
· 70-99范围的年值转换为1970-1999。
请记住这些规则只是合理猜测数据值表示什么。如果MySQL使用的启发不能产生正确的值,你应提供包含四位年值的确切输入。
ORDER BY可以正确排序有两位年的TIMESTAMP或YEAR值。
MIN() 및 MAX()와 같은 일부 함수는 TIMESTAMP 또는 YEAR를 숫자로 변환합니다. 이는 두 자리 연도 값을 갖는 값에서는 이러한 함수가 올바르게 작동하지 않음을 의미합니다. 이 경우 해결 방법은 TIMESTAMP 또는 YEAR를 4자리 연도 형식으로 변환하거나 MIN(DATE_ADD(TIMESTAMP,INTERVAL 0 DAYS))를 사용하는 것입니다.

innodbbufferpool은 데이터와 인덱싱 페이지를 캐싱하여 디스크 I/O를 줄여 데이터베이스 성능을 향상시킵니다. 작업 원칙에는 다음이 포함됩니다. 1. 데이터 읽기 : BufferPool의 데이터 읽기; 2. 데이터 작성 : 데이터 수정 후 BufferPool에 쓰고 정기적으로 디스크로 새로 고치십시오. 3. 캐시 관리 : LRU 알고리즘을 사용하여 캐시 페이지를 관리합니다. 4. 읽기 메커니즘 : 인접한 데이터 페이지를 미리로드합니다. Bufferpool을 크기를 조정하고 여러 인스턴스를 사용하여 데이터베이스 성능을 최적화 할 수 있습니다.

다른 프로그래밍 언어와 비교할 때 MySQL은 주로 데이터를 저장하고 관리하는 데 사용되는 반면 Python, Java 및 C와 같은 다른 언어는 논리적 처리 및 응용 프로그램 개발에 사용됩니다. MySQL은 데이터 관리 요구에 적합한 고성능, 확장 성 및 크로스 플랫폼 지원으로 유명하며 다른 언어는 데이터 분석, 엔터프라이즈 애플리케이션 및 시스템 프로그래밍과 같은 해당 분야에서 이점이 있습니다.

MySQL은 데이터 저장, 관리 및 분석에 적합한 강력한 오픈 소스 데이터베이스 관리 시스템이기 때문에 학습 할 가치가 있습니다. 1) MySQL은 SQL을 사용하여 데이터를 작동하고 구조화 된 데이터 관리에 적합한 관계형 데이터베이스입니다. 2) SQL 언어는 MySQL과 상호 작용하는 열쇠이며 CRUD 작업을 지원합니다. 3) MySQL의 작동 원리에는 클라이언트/서버 아키텍처, 스토리지 엔진 및 쿼리 최적화가 포함됩니다. 4) 기본 사용에는 데이터베이스 및 테이블 작성이 포함되며 고급 사용량은 Join을 사용하여 테이블을 결합하는 것과 관련이 있습니다. 5) 일반적인 오류에는 구문 오류 및 권한 문제가 포함되며 디버깅 기술에는 구문 확인 및 설명 명령 사용이 포함됩니다. 6) 성능 최적화에는 인덱스 사용, SQL 문의 최적화 및 데이터베이스의 정기 유지 보수가 포함됩니다.

MySQL은 초보자가 데이터베이스 기술을 배우는 데 적합합니다. 1. MySQL 서버 및 클라이언트 도구를 설치하십시오. 2. SELECT와 같은 기본 SQL 쿼리를 이해하십시오. 3. 마스터 데이터 작업 : 데이터를 만들고, 삽입, 업데이트 및 삭제합니다. 4. 고급 기술 배우기 : 하위 쿼리 및 창 함수. 5. 디버깅 및 최적화 : 구문 확인, 인덱스 사용, 선택*을 피하고 제한을 사용하십시오.

MySQL은 테이블 구조 및 SQL 쿼리를 통해 구조화 된 데이터를 효율적으로 관리하고 외래 키를 통해 테이블 간 관계를 구현합니다. 1. 테이블을 만들 때 데이터 형식을 정의하고 입력하십시오. 2. 외래 키를 사용하여 테이블 간의 관계를 설정하십시오. 3. 인덱싱 및 쿼리 최적화를 통해 성능을 향상시킵니다. 4. 데이터 보안 및 성능 최적화를 보장하기 위해 데이터베이스를 정기적으로 백업 및 모니터링합니다.

MySQL은 웹 개발에 널리 사용되는 오픈 소스 관계형 데이터베이스 관리 시스템입니다. 주요 기능에는 다음이 포함됩니다. 1. 다른 시나리오에 적합한 InnoDB 및 MyISAM과 같은 여러 스토리지 엔진을 지원합니다. 2.로드 밸런싱 및 데이터 백업을 용이하게하기 위해 마스터 슬레이브 복제 기능을 제공합니다. 3. 쿼리 최적화 및 색인 사용을 통해 쿼리 효율성을 향상시킵니다.

SQL은 MySQL 데이터베이스와 상호 작용하여 데이터 첨가, 삭제, 수정, 검사 및 데이터베이스 설계를 실현하는 데 사용됩니다. 1) SQL은 Select, Insert, Update, Delete 문을 통해 데이터 작업을 수행합니다. 2) 데이터베이스 설계 및 관리에 대한 생성, 변경, 삭제 문을 사용하십시오. 3) 복잡한 쿼리 및 데이터 분석은 SQL을 통해 구현되어 비즈니스 의사 결정 효율성을 향상시킵니다.

MySQL의 기본 작업에는 데이터베이스, 테이블 작성 및 SQL을 사용하여 데이터에서 CRUD 작업을 수행하는 것이 포함됩니다. 1. 데이터베이스 생성 : createAbasemy_first_db; 2. 테이블 만들기 : CreateTableBooks (idintauto_incrementprimarykey, titlevarchar (100) notnull, authorvarchar (100) notnull, published_yearint); 3. 데이터 삽입 : InsertIntobooks (Title, Author, Published_year) VA


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경
