我在 Access 中有一个包含字符串列和日期列的表。当日期低于 22.10.2010 时,我想从表中获取所有行,本月除外。所以,我需要从 30.09.2010 到 ...
我绑了一些东西,但我发现它不对:
SELECT name FROM table WHERE YEAR(date)<=2010 AND MONTH(date)<10
但是这个解决方案并不好,我没有其他想法。你能帮我一个通用的解决方案吗?谢谢
将年、月和“1”(以获取 月的第一天date
)串在一起并将其转换为Date
.
SELECT *
FROM MyTable
WHERE dateColumn
< CDate(CStr(YEAR(date)) + "-" + CStr(MONTH(date)) + "-1")
DAY
从日期中减去相关日期的(减一),得到该月的第一天。然后返回小于该值的所有行。
DECLARE @date DATE
SET @date = GETDATE()DECLARE
SELECT *
FROM MyTable
WHERE dateColumn
< DATEADD(DAY, -( DATEPART(DAY, @date) - 1 ), @date)
一个月的第 0 天是上个月的最后一天:
DateSerial(Year(Date()),Month(Date()),0)
所以:
SELECT [name] FROM [table]
WHERE [date]<=DateSerial(Year(Date()),Month(Date()),0)
从表中选择名称 WHERE ( YEAR(date)<2010 ) OR ( YEAR(date)=2010 AND MONTH(date)<10 )
您减去到目前为止该月的天数并使用该日期进行比较
Select myName FROM myTable Where myTable.myDate <=DateAdd("d",-Day(Now()),Now());
上面的查询将为您提供直到上个月最后一天结束的所有记录。
干杯。
SELECT you_col
FROM YourTable
WHERE your_date
< DATEADD('M',
DATEDIFF('M', #1990-01-01 00:00:00#, NOW()
), #1990-01-01 00:00:00#);
可以使用以下功能。这些甚至适用于闰年。
'如果你通过 #2016/01/20# 你会得到 #2016/01/31#
Public Function GetLastDate(tempDate As Date) As Date
GetLastDate = DateSerial(Year(tempDate), Month(tempDate) + 1, 0)
End Function
'如果你通过 #2016/01/20# 你得到 31
Public Function GetLastDay(tempDate As Date) As Integer
GetLastDay = Day(DateSerial(Year(tempDate), Month(tempDate) + 1, 0))
End Function