これは一般的な質問であり、このフォーラムで回答されていますが、私の質問はシナリオに固有です。 私は、データベーステーブル内のセンサデータを格納していますセンサーデータにタイムスタンプまたは日時を使用する必要があります
CREATE TABLE `sensordata` (
`userID` varchar(45) NOT NULL DEFAULT '',
`instrumentID` varchar(10) NOT NULL DEFAULT '',
`utcDateTime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`localDateTime` datetime DEFAULT NULL,
`data` varchar(200) DEFAULT NULL,
PRIMARY KEY (`userID`,`instrumentID`,`utcDateTime`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
localDateTime
我々は、ユーザーがのタイムゾーンを変更できるようにするため、列はので、私はそれを取り除くしたいが、私はまた、ローカルタイムを追跡する必要が冗長です私は記録されたデータの現地時間を維持しています。また、utcDateTime
のデータ型をtimestamp
に変更して、SELECTクエリで時間変換を実行できるようにしたいと考えています。たとえば、
If a sensor is recording in Sydney, one day the user changes its timezone to UTC, how will I know which data is for what time (if I use the current timezone of the sensor).
私はこのスキーマに固執する必要がありますか?または、タイムゾーンの変更を追跡し、それに基づいて日付を解析する別のテーブルを作成する必要がありますか? 良い解決策がある場合は、アドバイスをお願いします。 ありがとう
あなたはUTCで保存した場合、それは「現地時間」のためにどのような違いを生むん - センサーにローカルであるか、それを格納するサーバーに対してローカルであることを意味しますか?私はあなたが時間帯を救うことができたと思います(日付の本当の必要はありません)。ユーザーにデータを表示することは、UTCから選択したタイムゾーンに変換することです。 –
質問では、センサーの現地時間を話しています。 –