有人可以建议从不同的表格中区分两个日期的最佳方法(目前以格式varchar
存储为dd/mm/yyyy hh:mm:ss
,因此可能需要先转换它们吗?)
我尝试了下面但没有运气:
SELECT a.[Name],
a.[App],
CONVERT(VARCHAR(24), a.[Creation Date], 103),
CONVERT(VARCHAR(24), b.[Creation Date 2], 103)
FROM a
INNER JOIN b ON a.[Name] = b.[Name]
AND DATEDIFF(day, CONVERT(VARCHAR(24), a.[Creation Date], 103),
CONVERT(VARCHAR(24), b.[Creation Date 2], 103)) < 1
内部联接用于匹配&#39;名称&#39;在表a和b中
由于
答案 0 :(得分:0)
这会有用吗?
SELECT a.[Name],
a.[App],
CONVERT(VARCHAR(24), a.[Creation Date], 103),
CONVERT(VARCHAR(24), b.[Creation Date 2], 103)
FROM a
INNER JOIN b
ON a.[Name]=b.[Name]
AND DATEDIFF(day,CONVERT(VARCHAR(24), a.[Creation Date], 103),
CONVERT(VARCHAR(24), b.[Creation Date 2], 103)) > 1
AND ISDATE([a.Creation Date])=1
AND ISDATE([b.Creation Date 2])=1
答案 1 :(得分:0)
您希望将它们从VARCHAR
转换为DATETIME2(3)
,以便将它们视为日期时间数据类型而不是字符串!
所以你正在使用的是将它们从varchar
转换为varchar(24)
- 而且毫无意义....
请改用:
SELECT
a.[Name],
a.[App],
CONVERT(DATETIME2(3), a.[Creation Date], 103),
CONVERT(DATETIME2(3), b.[Creation Date 2], 103)
FROM a
INNER JOIN b ON a.[Name] = b.[Name]
AND DATEDIFF(day, CONVERT(DATETIME2(3), a.[Creation Date], 103),
CONVERT(DATETIME2(3), b.[Creation Date 2], 103)) < 1
最佳解决方案将存储这些日期....作为表格中的日期!停止使用字符串作为一切 - 如果它看起来像一个日期,像日期一样嘎嘎叫,闻起来像一个日期 - 这是一个日期,应该存储起来!