我原先有寫一個爬蟲程式會去抓資料並把時間戳記如1669345247透過以下程式轉換,再用dt.ToString("yyyy/MM/dd")把值存至DB裡。
DateTime ST = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));
DateTime dt = ST.AddSeconds(scanner_start);
現在發現從DB取值時某些資料可能會與實際存在DB的不同,像是DB存的是2022-11-25,欄位資料類型是date,但我將DB存的資料取出時卻顯示2022/11/2 00:00:00,感覺像是他少取一位數。
想問這樣的話是我當初沒有把完整的時間包含時毫秒,存進DB的關係還是我轉換上出了甚麼問題嗎?
DB的資料型態,如果是Date,那就是2022-12-02
如果是Datetime,那就是2022-11-30 15:56:22.153
請直接下 SQL 查詢該「日期」(其實只是字串)欄位資料
1.如果是 2022/11/25 - 就是 C# 抓資料出錯
2.如果是 2022/11/2 - 就是當初寫進資料庫時出錯
我猜啦
可能是第 2 種情形
猜錯勿見怪
把完整的時間包含時毫秒
DateTime ST = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));
DateTime dt = ST.AddSeconds(scanner_start);
string dateString = dt.ToString("yyyy-MM-dd HH:mm:ss");