2016-12-24 60 views
1

SQLite中,我的表如下:如何更新SQLite表與新列?

--------------------- 
Date   Temp 
--------------------- 
201309010051 82 
201309010151 81 
201309010251 80 
--------------------- 

我生成一個查詢,如下所示,其修改日期時間格式從201309010051到2013年9月1日00:51。

下面是我用「日期」一欄做所有值查詢:

select substr(Date, 1, 4)||"-"||substr(Date, 5, 2)||"-"||substr(Date, 7, 2) 
||" "||substr(Date, 9, 2)||":"||substr(Date, 11, 2) as CreatedColumn 
from myTable 

現在,我想將「CreatedColumn」添加到我的原始表。我試過如下:

update myTable set CreatedColumn = <my above query which modifies the datetime format> 

但是,它返回以下錯誤:

(sqlite3.OperationalError) near "select": syntax error 

我如何添加/追加從我的查詢產生的原始表「CreatedColumn」?

+0

變化請包括您嘗試使用的確切UPDATE查詢。 – duskwuff

+0

你有沒有考慮把你的日期/時間存儲爲紀元時間?並將任何需要完成的格式留給表示層。 –

+0

@joseph不,這個_whole_查詢。 – duskwuff

回答

2

如果你已經列CreatedColumn可以設置列的值與下面的查詢每一行:

UPDATE 
    myTable 
SET 
    CreatedColumn = substr(Date, 1, 4)||"-"||substr(Date, 5, 2)||"-"||substr(Date, 7, 2) ||" "||substr(Date, 9, 2)||":"||substr(Date, 11, 2) 
+0

這不是你在你的例子中所做的。在你的例子中,你有'SET SELECT ...',這不是你在我的例子中可以看到的。仔細閱讀我的代碼:) – Dekel

+0

我犯了一個錯誤,它工作正常。 – user121

+0

太棒了:)高興地幫忙 – Dekel

3

即@Dekel寫是將數據正確的查詢。在將信息添加到新列之前,您必須首先創建它。

- 表和數據的插入的初始創建:

DROP TABLE IF EXISTS `myTable`; 
CREATE TABLE `myTable`(
    `Date` int, 
    `Temp` int 
); 

INSERT INTO `myTable` VALUES (201309010051,82), 
          (201309010151,81), 
          (201309010251,80); 

- SELECT *:

SELECT * FROM `myTable`; 
+------------+------+ 
| Date  | Temp | 
+------------+------+ 
| 2147483647 | 82 | 
| 2147483647 | 81 | 
| 2147483647 | 80 | 
+------------+------+ 
3 rows in set (0.00 sec) 

- ALTER TABLE

ALTER TABLE `myTable` ADD COLUMN `CreatedColumn` DATETIME; 

SELECT * FROM `myTable`; 
    +------------+------+---------------+ 
    | Date  | Temp | CreatedColumn | 
    +------------+------+---------------+ 
    | 2147483647 | 82 | NULL   | 
    | 2147483647 | 81 | NULL   | 
    | 2147483647 | 80 | NULL   | 
    +------------+------+---------------+ 
    3 rows in set (0.00 sec) 

- 更新CreatedColumn - 使用德克爾的命令

UPDATE 
    `myTable` 
SET 
    `CreatedColumn` = substr(Date, 1, 4)||"-"||substr(Date, 5, 2)||"-"||substr(Date, 7, 2) ||" "||substr(Date, 9, 2)||":"||substr(Date, 11, 2); 

- 顯示錶

SELECT * FROM `myTable`; 
    +------------+------+---------------------+ 
    | Date  | Temp | CreatedColumn  | 
    +------------+------+---------------------+ 
    | 2147483647 | 82 | 0000-00-00 00:00:00 | 
    | 2147483647 | 81 | 0000-00-00 00:00:00 | 
    | 2147483647 | 80 | 0000-00-00 00:00:00 | 
    +------------+------+---------------------+ 
    3 rows in set (0.00 sec) 
+0

不錯的加法!你在這裏得到我的投票:) – Dekel