2016-06-22 80 views
0

聲明: 20-12-201631-12-2016之間的遊樂時間延遲一天。我如何爲此編寫SQL查詢?SQL向兩個值之間的所有日期添加1天

我目前有:

UPDATE Rides 
SET (SELECT * FROM Rides WHERE Date BETWEEN '20-12-2016' AND '31-12-2016') = [SOMETHING] 
+1

您正在使用什麼數據庫管理系統? (SQL Server?MySQL?Oracle?其他?) – Siyual

+0

如果這是mysql,日期是完全錯誤的,並且不起作用。 「日期數學」僅適用於使用「yyyy-mm-dd」格式的日期。並且您無法爲查詢分配值。您只能從查詢中提取值。 –

+0

我正在使用oracle抱歉忘記提及 –

回答

3

此作品在甲骨文:

UPDATE rides 
    SET date_field = date_field + 1 
    WHERE date_field BETWEEN '2016-12-20' AND '2016-12-31'; 

我指的是外地來更新爲date_field,因爲它是一個不好的做法,名稱字段/列有保留關鍵詞。

+0

@ EvilTeach也許如此,我無法讓自己更新關鍵字 - 非常糟糕的做法。 – Grayson

+0

@ EvilTeach我添加了評論。好決定。 – Grayson

+1

有時您會從之前的用戶那裏繼承不良的表/列名。這只是你必須處理的事情。您可以在列名稱周圍放置雙引號以允許混合大小寫名稱。它可能會使查詢看起來更乾淨,因爲它看起來不像關鍵字。 – EvilTeach

2

您可以使用Oracle如下:

Update Rides 
Set  Date = Date + 1 
Where Date Between '2016-12-20' And '2016-12-31' 
+0

訣竅。謝謝:) –

+0

請不要使用字符串文字作爲日期值。 Oracle會用'NLS_DATE_FORMAT'作爲格式掩碼隱式調用'TO_DATE()' - 如果這不匹配,則查詢將失敗。更糟糕的是,'NLS_DATE_FORMAT'是一個會話參數,因此任何用戶都可以爲其會話更改它,然後查詢可以中斷該用戶(併爲其他用戶工作),而無需更改查詢文本(使其非常難以調試) 。 – MT0

相關問題