我一直在尝试将1字段与其自身进行比较,方法是将其转换为“ddMMyyyy”并尝试执行它
数据示例:
User | DateTime
AU | 01-04-2022 11:11:11
AU | 01-04-2022 12:09:30
SG | 04-08-2023 03:23:01
NA | 21-11-2022 15:10:40
我试过这样做,日期时间由一些日期和时间数据组成,原始格式为“01-01-2022 11:12:09”
select *
format(DateTime, 'ddMMyyyy') AS DT
where DT != DT FROM TblUser
有什么办法吗?
我对此的期望是,它将显示DT不具有与自身相同值的字段。
预期结果为:
User | DateTime
SG | 04082023
NA | 21112022
3条答案
按热度按时间fwzugrvs1#
一个选项是使用WITH TIES。
我不喜欢使用
format()
,特别是对于大表。[DateTime]
列碰巧是字符串**s6fujrry2#
为了进行比较,我假设您需要“日期”不带时间的行。(实际上,如果数据类型为
datetime
,则任何“仅日期”也将具有00:00:00.000的时间。)因此,要忽略时间(除了那些时间不在00:00:00.000的行),请将日期类型从datetime
转换为date
。注意:子句的顺序必须为
SELECT
、FROM
、WHERE
如果您真的需要使用
column alias
“DT”,那么您需要这样的derived table
:但是在形成列“DT”时不要使用
format()
,因为您无法可靠地将字符串(ddMMyyyy格式)与date
或datetime
值进行比较。nb:
format()
函数返回一个字符串,即使您认为ddMMyyyy表示日期。gr8qqesn3#
一个简单的聚合就可以完成这项工作: