我有一个SELECT查询,其中一个字段如下所示:
SomeField
1775889
2014-10-01
1775889
1234567
2569874
5552789
2013-09-06
我需要计算非日期值的不同数量。像
这样的东西SELECT
COUNT(DISTINCT CASE WHEN SomeField != Date THEN SomeField END),
在这个例子中,当聚合SomeField时,由于有4个不同的非日期值,我返回了数字4。我该怎么做?
答案 0 :(得分:1)
将列传递给具有预期格式的STR_TO_DATE()
,invalids将为NULL
SELECT
COUNT(DISTINCT SomeField)
FROM
T
WHERE
STR_TO_DATE(SomeField, '%Y-%m-%d') IS NULL
答案 1 :(得分:0)
试试这个:
SELECT COUNT(*)
FROM TABLE T
WHERE STR_TO_DATE(SomeField , '%Y-%m-%d')='0000-00-00'
GROUP BY SomeField
未指定的日期或时间部分的值为0,因此str中未完全指定的值会产生一些或所有部分设置为0的结果