我在表中有这样的情况:
1 01.02.2011
2 05.01.2011
3 06.03.2012
4 07.08.2011
5 04.03.2013
6 06.08.2011
7
8 02.02.2013
9 04.06.2010
10 10.10.2012
11 04.04.2012
其中第一列是 id (INT),第二列是 TEXT,其中可以以“dd.mm.yyyy”格式写入日期。
我想得到:
1)整个表中输入的最低日期和整个表中输入的最高日期。
2) 最低输入日期为 2012 年,最高输入日期为 2012 年。
一年中的最低日期和最高日期可能相同(如 2010 年)或字段可能为空(如第 7 行)。
我想使用 TO_TIMESTAMP 但没有成功。例子:
SELECT (TO_TIMESTAMP(mydatetxt, 'DD.MM.YYYY'))
FROM " & myTable & "
ORDER BY (TO_TIMESTAMP(mydatetxt, 'DD.MM.YYYY')) ASC LIMIT 1
也与 BETWEEN 我没有得到想要的结果。
如何编写这两个查询?
解决方案:
感谢所有建议。
Igor 的解决方案对我来说是最合适和最简单的。
Dim sqlText As String = "SELECT min(to_date(nullif(mydate,''), 'DD.MM.YYYY')) FROM " & mytable
cmd1 = New NpgsqlCommand(sqlText, conn)
min = CDate(cmd1.ExecuteScalar())
If Not IsDate(min) Then
min = CType(CDate("01.01." & myyear) & " 00:00:00", Date)
End If
fromdate = CType(CDate(min), Date)
sqlText = "SELECT max(to_date(mydate, 'DD.MM.YYYY')) FROM " & mytable
cmd1 = New NpgsqlCommand(sqlText, conn)
max = CDate(cmd1.ExecuteScalar())
If Not IsDate(max) Then
max = CType(CDate("31.12." & myyear) & " 23:59:59.9999", Date)
End If
todate = CType(CDate(max), Date)