我正在针对从Excel文件导入的数据运行SQL语句。在此SQL中,我正在检查用户是否已使用IsDate函数正确输入了日期。由于这是尚未转换的原始数据,因此所有日期都存储在varchar数据类型字段中。
在某些情况下,如果用户输入的日期格式明显不正确,IsDate将返回1(有效日期)。
例如:
07/001/2012
2012-07-002
007/002/2012
关于如何处理此问题的任何建议?
SELECT *
FROM tblImport
WHERE (ISDATE(dt) = 0
AND (dt is not null AND dt <> ''))
谢谢!
ps Smacking用户没有帮助。
我做了很多数据转换工作,这是我创建的一个函数,几乎每天都会使用它来清除错误的日期:
CREATE FUNCTION dbo.fnCheckDate
(@InDate nvarchar(50))
RETURNS DATETIME
AS
BEGIN
declare @Return DATETIME
select @return = CASE WHEN ISDATE(@InDate) = 1
THEN CASE WHEN CAST(@InDate as DATETIME) BETWEEN '1/1/1901 12:00:00 AM' AND '6/6/2079 12:00:00 AM'
THEN @InDate
ELSE null
END
ELSE null
END
return @return
END
GO
结果:
SELECT dbo.fnCheckDate('07/001/2012') --> Returns 2012-07-01 00:00:00.000
SELECT dbo.fnCheckDate('2012-07-002') --> Returns 2012-07-01 00:00:00.000
SELECT dbo.fnCheckDate('007/002/2012') --> Returns 2012-07-01 00:00:00.000
SELECT dbo.fnCheckDate('00/002/2012') --> Returns Null
SELECT dbo.fnCheckDate('006/031/2012') --> Returns Null
SELECT dbo.fnCheckDate('') --> Returns Null
问题内容: 我有一列以()格式保存。我需要验证如果该月在30天内结束,那么没有报告损失日期为31的损失。我有数百万条记录。帮助将不胜感激。 查询应返回最后一个无效记录,因为200806在30天内结束。 问题答案: 对于您的特定问题,以下内容将返回错误的行: 根据您的输入界面,您可能需要重复31个月的几个月,以显示大于31的值。 2月有点棘手。逐步开始,确定超过29天的所有2月条目,您可以立即删除/
问题内容: alert(new Date(‘2010-11-29’)); chrome,ff没问题,但是Safari会喊“无效日期”。为什么呢 编辑:好的,根据下面的评论,我使用了字符串解析并尝试了以下操作: 编辑 :似乎人们仍在这里着陆-今天,我将使用或完成此操作。Date-fns也非常轻巧。 问题答案: 该模式不是构造函数的官方支持格式。Firefox似乎支持它,但不要指望其他浏览器也这样做。
我在Spring API的请求体中使用LocalDateTime。 当我在请求中输入无效日期时,例如“2020-02-31 00:00:00”,它会自动转换为“2020-02-29 00:00:00”。我想在无效日期的情况下抛出异常。官方留档中提到它会转换为以前的有效日期。
我想验证用户输入的日期是否有效,格式是否正确。我使用这个块来检查用户的输入,但是当我输入一个无效的日期时,打印语句会给我奇怪的输出。 当是时,它打印
问题内容: 我想说出JS中有效和无效日期对象之间的区别,但不知道如何: 有编写函数的想法吗? 建议使用Ash 来分析日期字符串,这为检查日期字符串是否有效提供了一种权威方法。 如果可能的话,我希望我的API接受Date实例,并能够检查/确认它是否有效。Borgar的解决方案可以做到这一点,但是我需要在浏览器中对其进行测试。我也想知道是否有更优雅的方法。 Ash使我考虑完全不让我的API接受实例,这
我试图将用户输入转换为datetime值,但它在shell脚本中给出了无效的日期错误 $5用户正在输入2015年12月3日$6用户正在输入00:10:00