sql5 3.6.0

SQLite compatible database with CJK FTS5 full-text search
# Datetime - 日期時間理論

`src/planner/datetime.rs`

## 日期時間的複雜性

日期時間處理遠比表面複雜:

1. **日曆的歷史問題** - 1582 年前無格里珠
2. **時區** - 地球分為 24 時區
3. **夏令時** - 每年兩次調整
4. **閏秒** - 不規律的調整

## 儒略日 (Julian Day)

從公元前 4713 年 1 月 1 日起的連續天數:

```
JD = 当前日期距離 4713 BC 的天數
```

### 為何需要儒略日?
- 跨越千年的日期計算
- 天文學廣泛使用

```
JULIANDAY('2024-01-15') ≈ 2460315.5
```

## 格里曆 (Gregorian Calendar)

現今使用的標準日曆:

```
年份 ÷ 400 = 閏年
年份 ÷ 100 ≠ 閏年
年份 ÷ 4 = 閏年
```

閏年規則:
- 400 的倍數:閏年
- 100 的倍數:平年
- 4 的倍數:閏年

## 夏令時 (DST)

夏季時間往前移動 1 小時:

| 地區 | 實行時間 |
|------|----------|
| 美國 | 3月第二週日凌晨 2:00 → 3:00 |
| 歐盟 | 3月最後週日凌晨 2:00 → 3:00 |
| 台灣 | 不實行 |

問題:轉換時刻的時間處理

## 時區表示

### UTC (Coordinated Universal Time)
世界標準時間

### 偏移量
```
UTC+8     → 北京時間
UTC-5     → 紐約時間(標準)
```

### IANA 時區資料庫
```
America/New_York
Asia/Taipei
```

## 日期時間格式

### ISO 8601
```
2024-01-15T12:30:45Z
     ↑              ↑
  日期時間分隔    UTC 標記
```

### STRFTIME 格式碼

|| 意義 | 範例 |
|----|------|------|
| %Y | 4 位年 | 2024 |
| %m | 2 位月 | 01-12 |
| %d | 2 位日 | 01-31 |
| %H | 24 小時 | 00-23 |
| %M || 00-59 |
| %S || 00-59 |

## SQLite 的日期時間

SQLite 没有專用的 DATETIME 類型,而是:
- 儲存為 TEXT、REAL 或 INTEGER
- 依賴函數進行計算

## 理論參考

- Dershowitz & Reingold, "Calendrical Calculations"
- ISO 8601: Date and Time Format
- IANA Time Zone Database