我正在使用一個 PostgreSQL 考古遺址資料庫,該資料庫將它們的創建年份('start_date')和它們被遺棄的年份('end_date')存盤為日期欄位。這些年可能是在共同時代 (BCE) 或共同時代 (CE) 之前,它們的范圍在公元前 900 年到現在之間,因為過去有些遺址被遺棄,但其中許多仍然有人居住。這是我用來讓您更好地了解我正在處理的資料的快照。
我的目標是使用此資料集構建一個查詢來定義在兩個特定年份(BCE 27 和 CE 235)之間占用的站點。這是顯示此目標的圖形,它應該導致選擇站點 A、B、C 和 D,而不是 E。為此,我嘗試了幾種解決方案:
select site_id, name, type, start_date, end_date from site_date where start_date between '0027-01-01 BC' and '0235-01-01';
...顯示從這兩年開始的網站,但不顯示在這兩年之間活躍的網站。
select site_id, name, type, start_date, end_date from site_date where end_date >= '0235-01-01';
...顯示在 CE 235 之前結束的站點。
...以及以前的變體。
最后,我意識到這些申請實際上是在定義開始和結束日期在 BCE 27 和 CE 235 之間的站點,而不是那些(在此期間仍然活躍)在開始日期之前和放棄在結束日期。問題是......我真的不知道如何解決這個問題。
你們中有人知道我能做些什么來解決這個問題嗎?任何幫助都將受到歡迎!
uj5u.com熱心網友回復:
偽代碼...
其中(start_date <= 27BCE 和 end_date >= 27BCE)或(start_date 在 27BCE 和 235CE 之間)
uj5u.com熱心網友回復:
聽起來您想要的是任何具有start_date <='0235-01-01' AND end_date >='0027-01-01 BC'.
uj5u.com熱心網友回復:
如圖所示,我知道樣本資料在這里,您想要 A、B、C 和 D 而不是 E,這些站點的結束日期 > '0027-01-01 BC' 并且這些站點存在于 BCE 27 和 CE 235 之間,
select * from site_date
where end_date > '0027-01-01 BC'
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/486965.html
標籤:sql 数据库 PostgreSQL 数据库设计
