Materi
Sistem pembayaran menyimpan waktu dalam UTC, sedangkan bulan yang dilaporkan adalah bulan pada jam pelanggan di Indonesia. WIB berselisih tetap tujuh jam dari UTC. Pesanan 31 Januari pukul 19.10 UTC terjadi pada 1 Februari pukul 02.10 WIB, jadi bulannya berganti. GA4 menetapkan hal yang sama untuk cohort harian: satu hari dihitung dari tengah malam ke tengah malam pada zona waktu properti.
Di SQLite, datetime(waktu_utc, '+7 hours') menggeser waktu tujuh jam, dan strftime('%Y-%m', waktu_utc, '+7 hours') langsung memberi bulan WIB. Modifier localtime tidak dipakai, karena hasilnya bergantung pada zona waktu komputer yang menjalankan kueri. Batas data dibandingkan pada zona yang sama: bila batasnya 20 Mei pukul 23.59.59 WIB, yang dibandingkan adalah waktu WIB, bukan waktu UTC.
Pembelian pertama adalah MIN(waktu) per pelanggan, diambil dari pesanan valid saja. Teks berformat YYYY-MM-DD HH:MM:SS terurut sama dengan urutan waktunya, jadi MIN pada teks itu memberi waktu paling awal. Contoh di klinik:
SELECT pasien_id, date(MIN(datetime(waktu_utc, '+7 hours'))) AS kunjungan_pertama
FROM kunjungan
WHERE status = 'hadir'
GROUP BY pasien_id;