查询返回0行

时间:2015-06-10 17:07:20

标签: sql sql-server

所以让我开始介绍所有涉及的表的基本表格布局:

#zip_code_time_zone

+----+----------+-----------+
| id | zip_code | time_zone |
+----+----------+-----------+
|  1 |    00544 |        -1 |
|  2 |    00601 |        -3 |
|  3 |    00602 |         0 |
|  4 |    00603 |        -3 |
|  5 |    00604 |         0 |
+----+----------+-----------+

#pricing_record

+------+---------------+--------------------+
|  id  | location_code | service_center_zip |
+------+---------------+--------------------+
| 7119 | TX725         |              79714 |
| 7121 | TX734         |              75409 |
| 7122 | TX737         |              78019 |
| 7124 | TX742         |              75241 |
| 7126 | TX751         |              77494 |
+------+---------------+--------------------+

#transaction_record

+----+-----------------+------------------+--------------+--------------+
| id | truck_stop_code |   create_date    | gps_verified | central_time |
+----+-----------------+------------------+--------------+--------------+
|  1 | CA428           | 05/01/2015 14:52 |            0 | NULL         |
|  2 | CA343           | 05/01/2015 19:10 |            0 | NULL         |
|  3 | CA223           | 05/01/2015 09:28 |            0 | NULL         |
|  4 | CA721           | 05/01/2015 07:55 |            0 | NULL         |
|  5 | MN336           | 05/01/2015 06:46 |            0 | NULL         |
+----+-----------------+------------------+--------------+--------------+

当我处理此项目时,create_date中的transaction_record列发现了一个问题。它需要转换为中央时间,所以我写了一个更新查询,但我无法成功设置central_time列。我的查询如下:

查询

UPDATE t
SET t.central_time = DATEADD(hour, z.time_zone,CONVERT(DATETIME, t.create_date, 120))
FROM eagle_devel.dbo.zip_code_time_zone z
INNER JOIN eagle_devel.dbo.pricing_record p ON z.zip_code = p.service_center_zip
INNER JOIN eagle_devel.dbo.transaction_record t ON t.truck_stop_code = p.location_code

这是我运行查询时得到的结果

(0 row(s) affected)

备注

time_zone中的#zip_code_time_zone列不是标准UTC,它是计算到中央的差异

在我们发言时,我仍在努力解决这个问题,只是寻找一些额外的帮助,看看别人是否可以比我自己更快地修复它。

1 个答案:

答案 0 :(得分:1)

尝试这样做而不做任何更改,您正在更新的表应该在FROM子句中,然后相应地调整JOIN

UPDATE t
SET t.central_time = DATEADD(hour, z.time_zone,CONVERT(DATETIME, t.create_date, 120))
FROM eagle_devel.dbo.transaction_record t
INNER JOIN eagle_devel.dbo.pricing_record p ON t.truck_stop_code = p.location_code
INNER JOIN eagle_devel.dbo.zip_code_time_zone z ON z.zip_code = p.service_center_zip