我想比较两种日期格式并返回" false"当两个格式 不相等时。
例如,我得到两个日期,24/10/2012(DD / MM / YYYY)和2016/11/05(YYYY / MM / DD)......在这种情况下,某些函数应该返回false,因为日期格式不相等。
当要比较的第二种格式不等于SQL格式(YYYY-MM-DD)时,我想要一个返回false的函数。
答案 0 :(得分:7)
您提出的问题(或两个)不需要回答。
日期没有格式 格式是日期向人类显示的方式。日期只是一个非常大的数字,如636094492018399433L
。它没有格式。
I want a function thats returns false when the second format to compare not equal the SQL format (YYYY-MM-DD)
您真的不必担心使用.NET DB提供程序的db格式(例如OleDB,SQLite,SQL Server,MySQL)。他们都知道如何将日期数据正确存储到日期列 - 这是他们的工作。如果您的列是字符串,不这样做。如果您希望日期与日期相同,请将其存储为日期。
数据库文档很难解释您从键盘通过Shell界面输入数据的情况的日期格式,或者可能从text / csv文件导入数据。使用NET DB提供程序时,数据格式是实现细节。
Using dbCon As New MySQLConnection(mySQLConnStr)
Using cmd As New MySqlCommand(SQL, dbCon)
dbCon.Open()
cmd.Parameters.Add("@p1", MySqlDbType.DateTime).Value = fromDate
cmd.Parameters.Add("@p2", MySqlDbType.DateTime).Value = toDate
cmd.ExecuteQuery
End Using
End Using
DbType
指定为DateTime
要仅存储日期,大多数数据库都有一个单独的DbType.Date
,但通常只需要传递.Date
部分:
cmd.Parameters.Add("@p2", MySqlDbType.Date).Value = toDate.Date
NET数据库提供程序所有知识,例如如何获取NET日期并将其保存到它们构建的数据库中,并以可以解析/读回的格式执行此操作。
答案 1 :(得分:1)
尝试
Dim matcher As Boolean = myString Like" ?? / ?? / ????"
28/11/1997; matcher = True
但 11/28/1997; matcher = True
(也是如此)
它适用于某些模式但不适用于所有可能尝试将日期拆分为多个变量:)
答案 2 :(得分:1)
这个问题令人困惑,因为它提出了两个不同的问题。这是对第二个问题的回答,该问题要求测试日期字符串是否采用格式" yyyy-MM-dd"的函数。它使用DateTime.ParseExact
方法来测试字符串是否为所需格式。
Function IsCorrectDateFormat(testDate As String) As Boolean
Dim myDate As DateTime
Return DateTime.TryParseExact(testDate, "yyyy-MM-dd",
System.Globalization.CultureInfo.InvariantCulture,
System.Globalization.DateTimeStyles.None, myDate)
End Function