2016-07-13 53 views
-1

我们有两个名为A和B的表。这两个表包含一个公共字段,即DOB。在表A它填充为01/11/2011(MM/DD/YYYY)和表B它填充为11/01/2011(DD/MM/YYYY)我需要SQL查询来比较这两个表中的字段并获取此值。SQL - >比较两个表中的日期字段

+2

(1)用你正在使用的数据库标记你的问题。 (2)指定列的数据类型。 –

+0

什么是你的列的类型? – rlanvin

+1

当然,请发布您尝试的SQL。如果你表现出一些努力,你会得到更好的回应。 – sstan

回答

0

有点像?

SELECT 
    A.DOB, 
    A.DateTimeField - B.DateTimeField Difference 
FROM 
    TableA A 
JOIN 
    TableB B ON A.DOB = B.DOB 
1

关系数据库中的日期以内部格式存储。因此,我必须假设您的表格将日期存储为字符串或数字。首先要做的是解决这个问题。使用本机格式是有利的 - 这就是它们存在的原因。

如果我假设字符串,你可以使用字符串操作来解决这个问题。虽然功能可能数据库中不同,这个想法是一样的:

from a join 
    b 
    on right(a.dob, 4) = right(b.dob, 4) and  -- compare years 
     left(a.dob, 2) = substring(b.dob, 3, 2) and -- compare months 
     substring(a.dob, 3, 2) = left(b.dob, 2)  -- compare days 

因为所有的功能,SQL引擎将无法采取指数的优势。回到我的第一条建议,并将日期存储为适合您的数据库的date类型。