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),我想从表中选取该记录