close
我在 PHP 裡對資料庫寫入一個時戳時間 (timestamp),假設是 1717689600 好了,我預期它應該是 2024/06/07,但是從 SQL Server (MSSQL) 取出後,它卻變成 2024/06/06。
我用 Epoch & Unix Timestamp Conversion Tools 線上轉換了 timestamp,發現這個時間原來是這樣:
- GMT: 2024年6月6日 星期四 16:00:00
- 台北時間:2024年6月7日 星期五 00:00:00 GMT+08:00
所以,原本我想要把這個 timestamp 處理成 "yyyy/mm/dd" 的格式,做了以下 SQL:
select convert(
varchar(10),
DATEADD(SECOND, cast(1717689600 as int), '19700101 00:00:00:000'),
111
);
我需要利用 UTC 時間與在地時間的差異,來把它還原回正確的時間,所以我把 SQL 修改成:
select convert(
varchar(10),
DATEADD(hour, DATEDIFF (hour, GETUTCDATE(), GETDATE() ),
DATEADD(SECOND, cast(1717689600 as int), '19700101 00:00:00:000') ),
111
);
原本想要用 "at time zone" 來轉換時間,但是我不會,哪天等我會了再補上來 []~( ̄▽ ̄)~*
轉換的寫法可參考:How to convert server timezone to local timezone for SQL server database。
在 MSSQL 可以使用的所有的時區,可以參考微軟的 "List of supported time zones"。
文章標籤
全站熱搜
留言列表