คำถามติดแท็ก timezone

5
วิธีจัดการ TimeZone อย่างถูกต้องใน SQL Server
เซิร์ฟเวอร์การพัฒนาในพื้นที่ของฉันอยู่ในตะวันออกกลาง แต่เซิร์ฟเวอร์ที่ใช้งานจริงของฉันอยู่ในสหราชอาณาจักร ฉันต้องการแสดงวันที่ถึงผู้ใช้ในเขตเวลาของพวกเขา ตัวอย่างเช่นหากผู้ใช้อยู่ในซาอุดิอาระเบียแล้วฉันต้องแสดงเวลาตามรูปแบบซาอุดิอาระเบีย ฉันควรสร้างตารางฐานข้อมูลใหม่ที่ชื่อว่า TimeZone และบันทึกเวลาใน UTC หรือไม่

10
ฉันจะได้รับการชดเชยที่ถูกต้องระหว่างเวลา UTC กับเวลาท้องถิ่นสำหรับวันที่ก่อนหรือหลัง DST ได้อย่างไร
ขณะนี้ฉันใช้สิ่งต่อไปนี้เพื่อรับเวลาข้อมูลท้องถิ่นจาก UTC วันที่และเวลา: SET @offset = DateDiff(minute, GetUTCDate(), GetDate()) SET @localDateTime = DateAdd(minute, @offset, @utcDateTime) ปัญหาของฉันคือว่าถ้ากลางวันเวลาออมทรัพย์เกิดขึ้นระหว่างGetUTCDate()และ@utcDateTimeที่@localDateTimeสิ้นสุดขึ้นเป็นปิดชั่วโมง มีวิธีง่าย ๆ ในการแปลงจาก utc เป็นเวลาท้องถิ่นสำหรับวันที่ไม่ใช่วันที่ปัจจุบันหรือไม่? ฉันใช้ SQL Server 2005

2
วิธีการจัดเก็บการประทับเวลาใน PostgreSQL ที่ดีที่สุด
ฉันกำลังทำงานกับการออกแบบฐานข้อมูล PostgreSQL และฉันสงสัยว่าวิธีที่ดีที่สุดในการจัดเก็บการประทับเวลา สมมติฐาน ผู้ใช้ในเขตเวลาที่แตกต่างกันจะใช้ฐานข้อมูลสำหรับฟังก์ชั่น CRUD ทั้งหมด ฉันดูที่ 2 ตัวเลือก: timestamp NOT NULL DEFAULT (now() AT TIME ZONE 'UTC') bigint NOT NULL DEFAULT สำหรับtimestampฉันจะส่งสตริงที่จะแสดงเวลาที่แน่นอน (UTC) สำหรับช่วงเวลา INSERT สำหรับbigintฉันจะเก็บสิ่งเดียวกันแน่นอน แต่ในรูปแบบตัวเลข (ปัญหาเกี่ยวกับเขตเวลาได้รับการจัดการก่อนที่จะส่งมิลลิวินาทีไปยังเซิร์ฟเวอร์ดังนั้นมิลลิวินาทีใน UTC ทุกครั้ง) ข้อได้เปรียบหลักอย่างหนึ่งของการจัดเก็บ a bigintอาจเป็นไปได้ว่าจะเป็นการง่ายกว่าในการจัดเก็บและดึงข้อมูลเนื่องจากการส่งผ่านการประทับเวลาที่จัดรูปแบบอย่างถูกต้องนั้นมีความซับซ้อนมากกว่าตัวเลขง่าย ๆ คำถามของฉันคือสิ่งที่จะช่วยให้การออกแบบที่ยืดหยุ่นที่สุดและสิ่งที่อาจเป็นข้อผิดพลาดของแต่ละวิธี

2
ทำไมถึงเป็น TIME ZONE nondeterministic
AT TIME ZONEดูเหมือนว่าSQL Server 2016 จะเป็น nondeterministic อย่างไรก็ตามฉันไม่สามารถค้นหาเอกสารอย่างเป็นทางการที่ระบุสิ่งนี้หรือให้เหตุผลเกี่ยวกับเหตุผลที่อยู่เบื้องหลัง ทำไมต้องเป็นAT TIME ZONEnondeterministic ตัวอย่างที่แสดงให้เห็นถึงความไม่มุ่งมั่น การดำเนินการ: CREATE TABLE Test ( LegacyTimestamp DATETIME, Timestamp AS LegacyTimestamp AT TIME ZONE 'Eastern Standard Time' PERSISTED ); ส่งคืนข้อผิดพลาดต่อไปนี้: Msg 4936, Level 16, State 1, Line 1 Computed column 'Timestamp' in table 'Test' cannot be persisted because the …

1
วิธีแปลงเวลา unix เป็น Timstamp ของ PostgreSQL โดยไม่มี timezome
ฉันมีฐานข้อมูล PostgreSQL ทำงานบนเซิร์ฟเวอร์ที่ตั้งค่าเขตเวลาเป็นโซนเวลาของอินเดีย (เช่น UTC +5: 30) ฉันมีข้อมูลบางอย่างในตารางที่สร้างเช่นนี้ CREATE TABLE "CLOUDDATA" ( "CD_Tm_Obs" timestamp without time zone, "CD_Avg_Cloud" double precision ) ฉันต้องการสืบค้นข้อมูลและรับค่าตามเวลาที่กำหนด อินพุตของฉันจะเป็น Unix Timestamp (เช่นวินาทีจาก 1 มกราคม 1970) select to_timestamp(TRUNC(CAST(1395036000 AS bigint)))วิธีเดียวของการแปลงเวลายูนิกซ์การประทับเวลาที่ฉันได้พบคือ: แต่สิ่งนี้สร้างการประทับเวลาด้วยเขตเวลา ข้อมูลของฉันอยู่ในtimestamp without time zoneดังนั้นฉันไม่ได้รับผลลัพธ์ใด ๆ วิธีการแปลงเวลา unix เป็น Timstamp ของ PostgreSQL โดยไม่มี timezome?

1
เหตุใดเขตเวลาจึงมีออฟเซ็ตออฟจาก UTC ในปี 0001 ใน Postgres อย่างบ้าคลั่ง
ใน Postgres 9.5 ฉันรู้สึกประหลาดใจเมื่อเห็นผลลัพธ์ที่เห็นด้านล่างขณะทำการทดสอบกับปี0001(ไม่มีศูนย์ปี0000) ออฟเซ็ตของ-07:52:58? ตัวอย่างรหัสบางส่วน โปรดทราบว่าฉันใช้ผสมกับTIMESTAMP WITH TIME ZONEและTIMESTAMP WITHOUT TIME ZONEดังนั้นอ่านอย่างระมัดระวัง SET TIME ZONE 'America/Los_Angeles' ; SELECT (TIMESTAMP WITH TIME ZONE '2015-01-01 00:00:00.0', TIMESTAMP WITH TIME ZONE '0001-01-01 00:00:00.0Z', TIMESTAMP WITHOUT TIME ZONE '0001-01-01 00:00:00.0Z') ; ("2015-01-01 00:00:00-08","0001-12-31 16:07:02-07:52:58 BC","0001-01-01 00:00:00") 0001-12-31 16:07:02-07:52:58 BCฉันกำลังประหลาดใจโดยค่าที่สองว่า ผมเข้าใจว่าเราต้องย้อนกลับไปแปดชั่วโมงเป็นAmerica/Los_Angelesเป็นแปดชั่วโมงที่อยู่เบื้องหลัง UTC กับ offset …

2
ฉันจะแก้ไขข้อผิดพลาดนี้ได้อย่างไร“ ข้อผิดพลาด 1298 (HY000): เขตเวลาที่ไม่รู้จักหรือไม่ถูกต้อง: 'UTC'”
เมื่อฉันเรียกใช้คำสั่งต่อไปนี้ฉันได้รับข้อผิดพลาด แต่หนึ่งในสคริปต์ของฉันต้องการมัน SET time_zone = 'UTC'; ERROR 1298 (HY000): Unknown or incorrect time zone: 'UTC'

3
“ AT TIME ZONE” พร้อมชื่อโซนบั๊ก PostgreSQL หรือไม่
ฉันตอบคำถามstackoverflowนี้และพบผลลัพธ์ที่แปลก: select * from pg_timezone_names where name = 'Europe/Berlin' ; name | abbrev | utc_offset | is_dst ---------------+--------+------------+-------- Europe/Berlin | CET | 01:00:00 | f และแบบสอบถามต่อไป select id, timestampwithtimezone, timestampwithtimezone at time zone 'Europe/Berlin' as berlin, timestampwithtimezone at time zone 'CET' as cet from data ; id | timestampwithtimezone | …

2
การจัดการโซนเวลาใน data mart / คลังสินค้า
เราเริ่มออกแบบหน่วยการสร้างดาต้ามาร์ต / คลังสินค้าและเราต้องสามารถรองรับโซนเวลาทั้งหมด (ลูกค้าของเรามาจากทั่วทุกมุมโลก) จากการอ่านการสนทนาออนไลน์ (และในหนังสือ) ดูเหมือนว่าวิธีแก้ปัญหาทั่วไปจะมีมิติวันที่และเวลาแยกจากกันรวมถึงการประทับเวลาในตารางข้อเท็จจริง อย่างไรก็ตามคำถามที่ฉันมีเวลาตอบยากคือขนาดและวันที่และเวลาที่ดีสำหรับฉันจริง ๆ แล้วพิจารณาความต้องการโซนเวลาแบบไดนามิกของฉันได้อย่างไร มิติเวลาทำให้รู้สึกมากกว่าเล็กน้อย แต่ฉันมีเวลายากกับมิติวันที่ แนวทางการออกแบบทั่วไปสำหรับส่วนข้อมูลวันที่มักจะมีคุณสมบัติเช่นชื่อวันวันในสัปดาห์ชื่อเดือน ฯลฯ ปัญหาที่ฉันมีอยู่ทั้งหมดคือ 23.00 น. ในวันอังคารที่ 31 ธันวาคม 2013 ใน UTC คือวันพุธ , 1 มกราคม 2014 ในโซนเวลาทั้งหมดที่อยู่หลัง UTC + 2 ดังนั้นถ้าฉันจะต้องทำการแปลงโซนเวลาเหล่านี้ทั้งหมดในทุก ๆ แบบสอบถาม (และรายงาน) แล้วประเด็นของการมีและการจัดเก็บคุณสมบัติเหล่านี้ที่ฉันอาจจะไม่เคยใช้ (ดูเหมือน) คืออะไร? บางคนแนะนำให้มีแถวความจริงสำหรับแต่ละเขตเวลา แต่ดูเหมือนว่าไร้สาระสำหรับฉัน เราต้องสามารถเก็บบันทึกได้หลายล้านรายการในแต่ละเดือน คนอื่น ๆ แนะนำให้มีตารางบริดจ์โซนเวลาซึ่งแม้ว่าจะมีเหตุผลบางอย่าง แต่ก็ดูเหมือนว่าจะมีความซับซ้อนและการรวมพิเศษเพื่อให้บรรลุสิ่งที่ลูกค้าและแอพของฉันควรจะสามารถหาได้จากวันที่ (การรายงานจะใช้เว็บเป็นหลัก ที่ซึ่งมีไลบรารีจำนวนมากมายเพื่อช่วยในการแปลงแสดงและจัดรูปแบบวันที่) สิ่งเดียวที่ฉันคิดได้คือความง่ายและประสิทธิภาพของการจัดกลุ่มตามวันที่และเวลา แต่วิธีที่แย่คือการจัดกลุ่มตามวันที่ …

2
การออกแบบคลังข้อมูลสำหรับการรายงานข้อมูลกับเขตเวลาต่างๆ
เรากำลังพยายามปรับการออกแบบคลังข้อมูลให้เหมาะสมซึ่งจะสนับสนุนการรายงานข้อมูลสำหรับเขตเวลาต่างๆ ตัวอย่างเช่นเราอาจมีรายงานมูลค่ากิจกรรมหนึ่งเดือน (หลายล้านแถว) ที่ต้องแสดงกิจกรรมที่จัดกลุ่มตามชั่วโมงของวัน และแน่นอนว่าชั่วโมงของวันนั้นจะต้องเป็นชั่วโมง "ท้องถิ่น" สำหรับเขตเวลาที่กำหนด เรามีการออกแบบที่ทำงานได้ดีเมื่อเราเพิ่งสนับสนุน UTC และเวลาท้องถิ่น การออกแบบมาตรฐานของมิติวันที่และเวลาสำหรับ UTC และเวลาท้องถิ่นรหัสของบนตารางข้อมูลจริง อย่างไรก็ตามวิธีการดังกล่าวดูเหมือนจะไม่ขยายหากเราต้องสนับสนุนการรายงานสำหรับเขตเวลา 100+ ตารางความจริงของเรากว้างขึ้นมาก นอกจากนี้เราจะต้องแก้ปัญหาไวยากรณ์ใน SQL เพื่อระบุวันที่และเวลาที่จะใช้สำหรับการจัดกลุ่มในการเรียกใช้รายงานใด ๆ อาจเป็นคำสั่งกรณีที่มีขนาดใหญ่มาก? ฉันเห็นคำแนะนำเพื่อรับข้อมูลทั้งหมดตามช่วงเวลา UTC ที่คุณครอบคลุมจากนั้นส่งคืนไปยังเลเยอร์การนำเสนอเพื่อแปลงเป็นแบบโลคัลและรวมที่นั่น แต่การทดสอบที่ จำกัด กับ SSRS ชี้ให้เห็นว่าจะช้ามาก ฉันได้อ่านหนังสือบางเล่มเกี่ยวกับเรื่องนี้ด้วยและพวกเขาทั้งหมดพูดว่ามีเพียง UTC และแปลงเป็นไฟล์แสดงหรือมี UTC และหนึ่งในท้องถิ่น จะขอบคุณความคิดและข้อเสนอแนะใด ๆ หมายเหตุ: คำถามนี้คล้ายกับ: การจัดการโซนเวลาใน data mart / warehouseแต่ฉันไม่สามารถแสดงความคิดเห็นกับคำถามนั้นได้ดังนั้นรู้สึกว่าสมควรได้รับคำถามของตัวเอง อัปเดต:ฉันเลือกคำตอบของแอรอนหลังจากเขาทำการอัปเดตที่สำคัญและโพสต์โค้ดตัวอย่างและไดอะแกรม ความคิดเห็นก่อนหน้าของฉันเกี่ยวกับคำตอบของเขาจะไม่สมเหตุสมผลอีกต่อไปเนื่องจากพวกเขาอ้างถึงการแก้ไขคำตอบเดิม ฉันจะพยายามกลับมาและอัปเดตสิ่งนี้อีกครั้งหากรับประกัน

1
เวลาออมแสง
ในสภาพแวดล้อมของฉันมีเซิร์ฟเวอร์ที่ทำงานบนการสำรองข้อมูลดั้งเดิมและแผน Ola Hallengren เซิร์ฟเวอร์ของเรามีการรวมกันของปี 2008, 2012 และ 2014 การสำรองข้อมูลเต็มรูปแบบทั้งหมดจะดำเนินการเวลา 12.00 น. และมีการสำรองข้อมูลบันทึกทุก 15 นาที ฉันไม่เคยคิดที่จะปรับเวลาตามฤดูกาลมาก่อนดังนั้นโปรดบอกฉันว่าควรปรับอะไรบ้าง การสำรองข้อมูลเต็มรูปแบบ 12am จะได้รับผลกระทบหรือไม่และจะเกิดอะไรขึ้นกับการสำรองข้อมูลบันทึก
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.