Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 将getdate()与两个不同的字段进行比较_Sql_Sql Server_Database - Fatal编程技术网

Sql 将getdate()与两个不同的字段进行比较

Sql 将getdate()与两个不同的字段进行比较,sql,sql-server,database,Sql,Sql Server,Database,我有两张桌子: T1 T2 id Effdate E_id DOB -------------- ------------ 1 20161212 2 1950-02-16 00:12:24 2 20130124 5 1978-01-16 10:14:30 我想比较getdate()

我有两张桌子:

T1                        T2
id   Effdate              E_id   DOB
--------------           ------------
1    20161212              2     1950-02-16 00:12:24
2    20130124              5     1978-01-16 10:14:30
我想比较
getdate()

我收到日期时间转换错误

例如:
getdate()

预期结果应来自表
T1

id  Effdate
--------------
1   20161212

如果两个表中的id对应于
id=E_id
,则可以将它们合并并按
id
分组:

;WITH T1 AS (
SELECT  1 id,
        CAST('20161212' as varchar(10)) Effdate
UNION ALL
SELECT  2,
        '20130124'
), T2 AS (
SELECT  1 E_id,
        CAST('1950-02-16 00:12:24' as datetime) DOB
UNION ALL
SELECT  2,
        '1978-01-16 10:14:30'
)

SELECT  id,
        MAX(CAST(Effdate as datetime)) as MD
FROM (
    SELECT *
    FROM T1
    UNION ALL
    SELECT *
    FROM T2
    ) t
GROUP BY id
HAVING MAX(CAST(Effdate as datetime)) >= GETDATE()

将为您带来预期结果

如果两个表中的id对应于
id=E_id
,您可以将它们合并并按
id
分组:

;WITH T1 AS (
SELECT  1 id,
        CAST('20161212' as varchar(10)) Effdate
UNION ALL
SELECT  2,
        '20130124'
), T2 AS (
SELECT  1 E_id,
        CAST('1950-02-16 00:12:24' as datetime) DOB
UNION ALL
SELECT  2,
        '1978-01-16 10:14:30'
)

SELECT  id,
        MAX(CAST(Effdate as datetime)) as MD
FROM (
    SELECT *
    FROM T1
    UNION ALL
    SELECT *
    FROM T2
    ) t
GROUP BY id
HAVING MAX(CAST(Effdate as datetime)) >= GETDATE()

将为您带来预期结果

标记您正在使用的dbms。(
getdate()
是特定于产品的函数。)添加预期结果。Effdate和DOB列数据类型?Effdate(varchar)和DOB(datetime)的数据类型可能存在类型不匹配。您的
MAXDATE
函数需要什么?MAXDATE用于获取两个日期之间的最大日期,即effdate和DOB。然后我想将结果与cuurentdate进行比较。因此,如果currentdate小于maxdate(result),我想从正在使用的dbms的表标签中选取该记录。(
getdate()
是特定于产品的函数。)添加预期结果。Effdate和DOB列数据类型?Effdate(varchar)和DOB(datetime)的数据类型可能存在类型不匹配。您的
MAXDATE
函数需要什么?MAXDATE用于获取两个日期之间的最大日期,即effdate和DOB。然后我想将结果与cuurentdate进行比较。因此,如果currentdate小于maxdate(result),我想从表中选取该记录