source

MySQL의 현재 시간대를 얻으려면 어떻게 해야 합니까?

factcode 2022. 10. 14. 22:39
반응형

MySQL의 현재 시간대를 얻으려면 어떻게 해야 합니까?

MySQL에 그런 기능이 있는지 아는 사람?

갱신하다

유효한 정보가 출력되지 않습니다.

mysql> SELECT @@global.time_zone, @@session.time_zone;
+--------------------+---------------------+
| @@global.time_zone | @@session.time_zone |
+--------------------+---------------------+
| SYSTEM             | SYSTEM              |
+--------------------+---------------------+

가 MySQL을 못할 도 있습니다.time_zoneused,s , used, used, used, used, used, that's good, , used, used, used, used, that's goodPHP 「」, 「」와 같은 수 한,SYSTEM

매뉴얼 (섹션 9.6)에서:

의 타임존의 은 다음과할 수 .
mysql> SELECT @@global.time_zone, @@session.time_zone;

반환 편집SYSTEMMySQL이 시스템 표준 시간대를 사용하도록 설정되어 있으면 도움이 되지 않습니다.있기 라면 MySQL의 답변은 PHP입니다.SYSTEM그런 다음 시스템에서 어떤 타임존을 사용하고 있는지 물어볼 수 있습니다.(물론 VolkerK가 지적한 것처럼 PHP는 다른 서버에서 실행되고 있을 수 있지만, 상정대로 웹 서버와 DB 서버가 같은 타임존에 [실제로 들어가 있지 않은 경우]로 설정되어 있다고 가정하면 큰 도약이 아닙니다.)단, (MySQL과 마찬가지로) PHP가 date_default_timezone_set사용하는 타임존()을 설정할 수 있습니다.즉, OS가 사용하는 것과 다른 값을 보고할 수 있습니다.만약 당신이 PHP 코드를 제어하고 있다면, 당신은 당신이 그것을 하고 있는지 알고 있어야 합니다.

그러나 MySQL 서버가 어떤 시간대를 사용하고 있는지 묻는 것은 데이터베이스 내의 데이터에 대해 전혀 알 수 없기 때문에 이 모든 질문은 접선일 수 있습니다.상세한 것에 대하여는, 다음의 문서를 참조해 주세요.

상세 설명:

서버를 관리하고 있는 경우는, 타임 존이 기존의 수량인 것을 확인할 수 있습니다.서버를 제어할 수 없는 경우 다음과 같이 연결에 사용되는 시간대를 설정할 수 있습니다.

set time_zone = '+00:00';

, 타임 로 에, 그 조작( 「」, 「GMT」등)이 가능하게 .라서, 、 예예예예예예예 ( 예 : )now()는 GMT를

단, 시각 및 날짜 값은 MySQL에 시간대 정보와 함께 저장되지 않습니다.

mysql> create table foo (tstamp datetime) Engine=MyISAM;
Query OK, 0 rows affected (0.06 sec)

mysql> insert into foo (tstamp) values (now());
Query OK, 1 row affected (0.00 sec)

mysql> set time_zone = '+01:00';
Query OK, 0 rows affected (0.00 sec)

mysql> select tstamp from foo;
+---------------------+
| tstamp              |
+---------------------+
| 2010-05-29 08:31:59 |
+---------------------+
1 row in set (0.00 sec)

mysql> set time_zone = '+02:00';
Query OK, 0 rows affected (0.00 sec)

mysql> select tstamp from foo;
+---------------------+
| tstamp              |
+---------------------+
| 2010-05-29 08:31:59 |      <== Note, no change!
+---------------------+
1 row in set (0.00 sec)

mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2010-05-29 10:32:32 |
+---------------------+
1 row in set (0.00 sec)

mysql> set time_zone = '+00:00';
Query OK, 0 rows affected (0.00 sec)

mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2010-05-29 08:32:38 |      <== Note, it changed!
+---------------------+
1 row in set (0.00 sec)

을 아는 은 지금예: 시간대를 알 수 있다)에합니다.now(),unix_timestamp()데이터베이스 데이터 내의 날짜가 어떤 시간대를 사용하고 있는지 알 수 없습니다.서버의 타임존을 사용하여 작성되었다고 가정할 수도 있지만, 그 가정은 잘못된 것일 수 있습니다.데이터에 저장된 날짜 또는 시간의 시간대를 확인하려면 표준 시간대 정보와 함께 저장되거나 항상 GMT에 있는지 확인해야 합니다.

데이터가 서버의 타임존을 사용하여 작성되었다고 가정하는 이유는 무엇입니까?우선, 데이터는 다른 시간대를 설정하는 연결을 사용하여 작성되었을 수 있습니다.데이터베이스가 서버 간에 이동되었을 수 있습니다.서버의 타임존이 다른 경우(텍사스에서 캘리포니아로 이동한 데이터베이스를 상속받았을 때 이와 마주쳤습니다).그러나 데이터가 서버에 쓰여져 있어도 현재 표준 시간대로는 애매합니다.작년 미국에서는 11월 1일 새벽 2시에 서머타임이 해제되었다.내 서버가 태평양 표준 시간대를 사용하여 캘리포니아에 있고, 그 값이 있다고 가정합니다.2009-11-01 01:30:00를 참조해 주세요.게언 ??1시 30분? PDT '1시 30분'11' 1' PST(1'1' PST)이 전혀 .★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★Moral: 항상 날짜/시간을 GMT(DST를 실행하지 않음)에 저장하고 필요에 따라 원하는 시간대로 변환합니다.

다음 쿼리는 현재 세션의 시간대를 반환합니다.

select timediff(now(),convert_tz(now(),@@session.time_zone,'+00:00'));

말하면 ★★★★★★★SELECT @@system_time_zone;

PST( 「 」 「 」 「 」 「 」

세션 시간대를 결정하려는 경우 다음 쿼리를 사용할 수 있습니다.
SELECT IF(@@session.time_zone = 'SYSTEM', @@system_time_zone, @@session.time_zone);

그러면 세션 시간대가 시스템 시간대와 다를 경우 세션 시간대가 반환됩니다.

Jakub Vranna(작성자 또는 관리자NotORM)가 코멘트에서 언급했듯이 현재 시간대 오프셋을 선택합니다.TIME 라이선스:

SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP);

환::02:00:00 +2:00일 경우

여기에 부정행위 기록을 작성했습니다.MySQL의 타임존을 UTC로 설정해야 합니까?

mysql의 현재 시간대를 가져오려면 다음 작업을 수행합니다.

 SELECT @@system_time_zone;   # from this you can get the system timezone 
 SELECT IF(@@session.time_zone = 'SYSTEM', @@system_time_zone, @@session.time_zone) # This will give you time zone if system timezone is different from global timezone

mysql 시간대를 변경하는 경우:

 SET GLOBAL time_zone = '+00:00';   # this will set mysql timezone in UTC
 SET @@session.time_zone = "+00:00";  # by this you can chnage the timezone only for your particular session 

GMT의 차이가 정수로 필요한 경우:

SELECT EXTRACT(HOUR FROM (TIMEDIFF(NOW(), UTC_TIMESTAMP))) AS `timezone`

mysql db의 타임존을 찾으러 오시는 분들께.

이 쿼리를 사용하여 현재 시간대를 얻을 수 있습니다.

mysql> SELECT @@system_time_zone as tz;
+-------+
|  tz   |
+-------+
|  CET  |
+-------+

설명에 기재되어 있는 명령어는 서버의 타임존을 나타내는 「SYSTEM」을 반환합니다.우리의 질문에는 유용하지 않습니다.

다음 쿼리는 시간대를 이해하는 데 도움이 됩니다.

SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP) as GMT_TIME_DIFF;

위의 쿼리는 Coordinated Universal Time(UTC; 협정 세계시)에 대한 시간 간격을 제공합니다.따라서 시간대를 쉽게 분석할 수 있습니다. 데이터베이스 시간대가 IST일 경우 출력은 5:30입니다.

UTC_TIMESTamp

MySQL에서 UTC_TIMESTamp는 현재 UTC 날짜와 시간을 'YYY-MM-DD HH:문자열 또는 숫자 컨텍스트에서의 함수 사용에 따라 MM:SS' 또는 YYYMMDDHHMMSS.uuuuu 형식을 지정합니다.

NOW()

NOW() 함수.MySQL NOW()는 'YYY-MM-DD HH:함수의 컨텍스트(숫자 또는 문자열)에 따라 MM:SS' 형식 또는 YYYMMDDHHMMSS.uuuuu 형식을 지정합니다.CURRENT_TIMESTAMP, CURRENT_TIMESTAMP(), LOCALTIME()는 NOW()의 동의어입니다.

MySQL Server 시간대 지원 및 시스템 변수를 확인하십시오.도움이 되셨어요?

내 PHP 프레임워크는

SET LOCAL time_zone='Whatever'

연결 후 켜짐. 여기서 'What' == date_default_timezone_get()

, 확실히 할 수 있습니다.SYSTEM와 .SQL PHP를 사용합니다.

네, PHP는 강한 애착을 가지고 있으며 이에 영향을 줄 수 있습니다.

시간대에 따라 현재 시간을 얻으려면 다음을 사용합니다(내 경우 '+5:30').

DATE_FORMAT(convert_tz(now)(,@@session.time_zone',+05:30'),'%Y-%m-%d''를 선택합니다.

다음을 시도할 수 있습니다.

select sec_to_time(TIME_TO_SEC( curtime()) + 48000);

여기서 시간 차이를 초로 지정할 수 있습니다.

LPAD(TIME_FORMAT(TIMEDIFF(NOW(), UTC_TIMESTAMP),’%H:%i’),6,’+')MySQL을 MySQL에서 할 수 .CONVERT_TZ()서머타임이 있는 경우 오프셋이 시간이 지남에 따라 변경될 수 있기 때문에 취득한 타임존 오프셋은 식을 평가한 시점에서만 유효합니다. 이 은 '어느 때 보다'와 함께 쓸 수 요.NOW()으로, 「이것에 의해서, 어떤 것이 불명확하게 라고 하는 것은 불명확하게 됩니다.NOW()의 경우, 「」(DST 의 경우),NOW()1년에 한 번씩 뒤로 점프하기 때문에 특정 시점에 대해 몇 가지 중복된 값이 중복됩니다.

시스템의 시간대를 변경한 후 mysqld를 재시작하면 됩니다.

MySQL의 글로벌 타임존은 시스템의 타임존을 사용합니다.이러한 시스템 속성을 변경할 경우 Mysqld를 재시작하기만 하면 됩니다.

타임스탬프가 있는 데이터베이스 중 하나에 더미 레코드를 삽입합니다. 해당 레코드를 선택하여 타임스탬프의 값을 가져옵니다.그 레코드를 삭제해 주세요.서버에서 데이터 쓰기에 사용하는 시간대를 확인하고 PHP 시간대를 무시합니다.

그럴 수도 있다.

select timediff(current_time(),utc_time())

이 방법으로는 시간대 값을 직접 얻을 수 없습니다.

@@global.time_zone에 사용할 수 됩니다.'SYSTEM'.

하여 해야 하는 session SET TIME_ZONE =하면 '아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아.@@session.time_zone문의하신 경우@@global.time_zoneㅇㅇㅇㅇ가 나옵니다.'SYSTEM'.

datediff,date_sub , 「」timediffnow() ★★★★★★★★★★★★★★★★★」utc_time()변환 문제가 발생할 수 있습니다.

다만, 상기에 제시된 것은, 적어도 일부의 서버 버전에서는 동작할 가능성이 있습니다.내 버전은 5.5.43-37이며 호스트형 솔루션입니다.

이 질문에 대한 직접적인 답변은 아니지만 이 블로그 게시물은 이 주제에 대한 귀중한 정보를 제공합니다.

https://danuka-praneeth.medium.com/guide-to-time-zones-conversion-between-zones-and-storing-in-mysql-da4fc4350cd9 를 참조해 주세요.

블로그 투고에서 인용:

MySQL5+에서는 TIMESTAMP 값이 세션 시간대에서 UTC로 변환되어 저장되며 UTC에서 세션 시간대로 변환되어 가져옵니다.그러나 DATETIME은 변환을 하지 않습니다.

다음 코드를 사용해 보십시오.

//ASP CLASSIC
Set dbdate = Server.CreateObject("ADODB.Recordset")
dbdate.ActiveConnection = MM_connection
dbdate.Source = "SELECT NOW() AS currentserverdate "
dbdate.Open()
currentdate = dbdate.Fields("currentserverdate").Value
response.Write("Server Time is "&currentdate)
dbdate.Close()
Set dbdate = Nothing

언급URL : https://stackoverflow.com/questions/2934258/how-do-i-get-the-current-time-zone-of-mysql

반응형