我有一列LossDate
以(yyyymmdd
)格式保存。我需要验证如果该月在30天内结束,那么没有报告损失日期为31的损失。我有数百万条记录。帮助将不胜感激。
LossDate
--------
20120128
20150520
20180631
查询应返回最后一个无效记录,因为200806在30天内结束。
对于您的特定问题,以下内容将返回错误的行:
select *
from table
where substr(lossdate,5,2) in ('04','06','09','11')
and substr(lossdate,7,2) > '30'
根据您的输入界面,您可能需要重复31个月的几个月,以显示大于31的值。
select *
from table
where substr(lossdate,5,2) in ('01','03','07','08','10','12')
and substr(lossdate,7,2) > '31'
2月有点棘手。逐步开始,确定超过29天的所有2月条目,您可以立即删除/修复这些条目。
select *
from table
where substr(lossdate,5,2) = '02'
and substr(lossdate,7,2) > '29'
然后,您需要对2月日期大于28且不是a年的其余行重复此操作。在过去的100年中,任何可被4整除的年份都是a年,因此您可以使用此标识剩余的年份(假设您已更正/删除了已经发现的不良Feb条目):
select *
from table
where substr(lossdate,5,2) = '02'
and mod(substr(lossdate,1,4),4)) <> 0
and substr(lossdate,7,2) > '28'
问题内容: 我正在针对从Excel文件导入的数据运行SQL语句。在此SQL中,我正在检查用户是否已使用IsDate函数正确输入了日期。由于这是尚未转换的原始数据,因此所有日期都存储在varchar数据类型字段中。 在某些情况下,如果用户输入的日期格式明显不正确,IsDate将返回1(有效日期)。 例如: 关于如何处理此问题的任何建议? 谢谢! ps Smacking用户没有帮助。 问题答案: 我做
问题内容: 我只想验证用户的给定输入 即使日期有效,该日期也将返回false,因为日期为澳大利亚格式 我可以将最后一行更改为以下内容 它的工作原理。但是,如果@Userinput是垃圾(即:-‘hello’),则最后一条语句将失败。无论用户输入什么内容,我怎样才能得到一个能验证为澳大利亚日期(dd / mm / yyyy)的东西? 谢谢 问题答案: 使用 SET DATEFORMAT 指定您希望输
问题内容: 在MS SQL 2000和2005中,给定日期时间(例如‘2008-09-25 12:34:56’),获取仅包含‘2008-09-25’的日期时间的最有效方法是什么? 问题答案: 我必须承认,我以前从未见过Matt展示的下浮率转换。我不得不对此进行测试。 我测试了一个纯选择(它将返回日期和时间,而这不是我们想要的),这里是统治性解决方案(floor-float),这里提到了一个普通的“
问题内容: 我只是写了这个单元测试: 输出为: 的图案是与是使用把字符串日期日期对象的方法的库。 为什么des.java.util.Date对象验证日期有效性? 问题答案: 您需要进行设置,以使SimpleDateFormat严格验证您的输入。 您可以参考setLenient文档以进一步了解。根据定义,
问题内容: 首先,感谢任何帮助我解决此问题的人。我正在使用SQL 2005,但如果05中没有可用的解决方案,则可以使用2008。 我有一排数据看起来像这样: 因此,我要做的是每天计算每个区域的总请求量。结果应为: 我该怎么做呢?我很沮丧,没有任何谷歌搜索帮助。 问题答案: 您将需要一个Calendar表,或者可以使用CTE生成一个。一旦有了这些,其余的查询就应该变得无关紧要了。由于递归问题并且不允
问题内容: 我很好奇,用Java 创建对象的最明显的方法已被弃用,并且似乎已被使用宽大日历的不太明显的方法“替代”。 如何检查以日,月和年的组合形式给出的日期是否为有效日期? 例如,2008-02-31(如yyyy-mm-dd)将是无效日期。 问题答案: 当前的方法是使用日历类。它具有setLenient方法,该方法将验证日期和引发异常,如果超出示例,则抛出异常。 忘记添加:如果您获得日历实例并使