请教:用SQL语句,怎样筛选具体的日期、时间字段内的某一个值?

时间:2022-04-11 15:05:11
例如我有一个数据表example,里面有一个日期字段MM_date和一个时间字段MM_time,
现在我要查出符合任意年、月、日、星期几、第几周、某时、某分的所有数据(即可实现让用户自定义查询),在ASP中怎样构建SQL语句?
小虾先行谢过各位大圣!

7 个解决方案

#1


可以实现。。。只是比较复杂。。。用处理时间的函数就可以了。。。

year month day 等。。。

#2


用一个datetime字段不就解决了,还干吗用两个字段。
主要是在where子句中用到datediff()函数,不难,

#3


查询条件用CONVERT(datatime)来过滤,用法看帮助吧。

#4


select * from example where year(MM_date)=2002 or month(MM_date)=9 or day(MM_time)=12

#5


我知道,现在问题是那个需要匹配的具体年、月、日、钟、点是由用户表单提交的.
如我要查所有9月份12点钟或所有2001年12日的数据,怎样构建SQL语句?

回复:
select * from example where (month(MM_date)=9 and hour(MM_time)=12) or ( year(MM_date)=2001 and day(MM_date)=12 )

#6


Qmonth = Request("Qmonth") 'Qmonth=9
Qhour = Request("Qhour") 'Qhour=12
Qyear = Request("Qyear") 'Qyear=2001
Qday = Request("Qday") 'Qday=12

Sql = "select * from example where (month(MM_date)="& Qmonth &" and hour(MM_time)="& Qhour &") or ( year(MM_date)="& Qyear &" and day(MM_date)="& Qday &" )"

#7


sql="select * FROM example WHERE DATEDIFF('d', time, now()) > 7 '7天内的所有记录

time是日期型的一个字段

datediff的用法
DateDiff(interval, date1, date2 [,firstdayofweek[, firstweekofyear]])
参数
interval 
必选项。字符串表达式表示用于计算 date1 和 date2 之间的时间间隔。 
date1, date2 
必选项。日期表达式。用于计算的两个日期。 
Firstdayofweek 
可选项。指定星期中第一天的常数。如果没有指定,则默认为星期日。有关数值,请参阅“设置”部分。 
Firstweekofyear 
可选项。指定一年中第一周的常数。如果没有指定,则默认为 1 月 1 日所在的星期。
设置
interval 参数可以有以下值:
设置 描述 
yyyy 年 
q    季度 
n    月 
y    一年的日数 
d    日 
w    一周的日数 
ww   周 
h    小时 
m    分钟 
s    秒 

firstdayofweek 参数可以有以下值:

常数                   值   描述 
vbUseSystemDayOfWeek   0    使用区域语言支持 (NLS) API 设置。 
vbSunday               1    星期日(默认) 
vbMonday               2    星期一 
vbTuesday              3    星期二 
vbWednesday            4    星期三 
vbThursday             5    星期四 
vbFriday               6    星期五 
vbSaturday             7    星期六 

firstweekofyear 参数可以有以下值:

常数                   值  描述 
vbUseSystem            0   使用区域语言支持 (NLS) API 设置。 
vbFirstJan1            1   由 1 月 1 日所在的星期开始(默认)。 
vbFirstFourDays        2   由在新年中至少有四天的第一周开始。 
vbFirstFullWeek        3   由在新的一年中第一个完整的周开始。 

说明
DateDiff 函数用于判断在两个日期之间存在的指定时间间隔的数目。例如可以使用 DateDiff 计算两个日期相差的天数,或者当天到当年最后一天之间的星期数。

要计算 date1 和 date2 相差的天数,可以使用“一年的日数”(“y”)或“日”(“d”)。当 interval 为“一周的日数”(“w”)时,DateDiff 返回两个日期之间的星期数。如果 date1 是星期一,则 DateDiff 计算到 date2 之前星期一的数目。此结果包含 date2 而不包含 date1。如果 interval 是“周”(“ww”),则 DateDiff 函数返回日历表中两个日期之间的星期数。函数计算 date1 和 date2 之间星期日的数目。如果 date2 是星期日,DateDiff 将计算 date2,但即使 date1 是星期日,也不会计算 date1。

如果 date1 晚于 date2,则 DateDiff 函数返回负数。

firstdayofweek 参数会对使用“w”和“ww”间隔符号的计算产生影响。

如果 date1 或 date2 是日期文字,则指定的年度会成为日期的固定部分。但是如果 date1 或 date2 被包括在引号 (" ") 中并且省略年份,则在代码中每次计算 date1 或 date2 表达式时,将插入当前年份。这样就可以编写适用于不同年份的程序代码。

在 interval 为“年”(“yyyy”)时,比较 12 月 31 日和来年的 1 月 1 日,虽然实际上只相差一天,DateDiff 返回 1 表示相差一个年份。


#1


可以实现。。。只是比较复杂。。。用处理时间的函数就可以了。。。

year month day 等。。。

#2


用一个datetime字段不就解决了,还干吗用两个字段。
主要是在where子句中用到datediff()函数,不难,

#3


查询条件用CONVERT(datatime)来过滤,用法看帮助吧。

#4


select * from example where year(MM_date)=2002 or month(MM_date)=9 or day(MM_time)=12

#5


我知道,现在问题是那个需要匹配的具体年、月、日、钟、点是由用户表单提交的.
如我要查所有9月份12点钟或所有2001年12日的数据,怎样构建SQL语句?

回复:
select * from example where (month(MM_date)=9 and hour(MM_time)=12) or ( year(MM_date)=2001 and day(MM_date)=12 )

#6


Qmonth = Request("Qmonth") 'Qmonth=9
Qhour = Request("Qhour") 'Qhour=12
Qyear = Request("Qyear") 'Qyear=2001
Qday = Request("Qday") 'Qday=12

Sql = "select * from example where (month(MM_date)="& Qmonth &" and hour(MM_time)="& Qhour &") or ( year(MM_date)="& Qyear &" and day(MM_date)="& Qday &" )"

#7


sql="select * FROM example WHERE DATEDIFF('d', time, now()) > 7 '7天内的所有记录

time是日期型的一个字段

datediff的用法
DateDiff(interval, date1, date2 [,firstdayofweek[, firstweekofyear]])
参数
interval 
必选项。字符串表达式表示用于计算 date1 和 date2 之间的时间间隔。 
date1, date2 
必选项。日期表达式。用于计算的两个日期。 
Firstdayofweek 
可选项。指定星期中第一天的常数。如果没有指定,则默认为星期日。有关数值,请参阅“设置”部分。 
Firstweekofyear 
可选项。指定一年中第一周的常数。如果没有指定,则默认为 1 月 1 日所在的星期。
设置
interval 参数可以有以下值:
设置 描述 
yyyy 年 
q    季度 
n    月 
y    一年的日数 
d    日 
w    一周的日数 
ww   周 
h    小时 
m    分钟 
s    秒 

firstdayofweek 参数可以有以下值:

常数                   值   描述 
vbUseSystemDayOfWeek   0    使用区域语言支持 (NLS) API 设置。 
vbSunday               1    星期日(默认) 
vbMonday               2    星期一 
vbTuesday              3    星期二 
vbWednesday            4    星期三 
vbThursday             5    星期四 
vbFriday               6    星期五 
vbSaturday             7    星期六 

firstweekofyear 参数可以有以下值:

常数                   值  描述 
vbUseSystem            0   使用区域语言支持 (NLS) API 设置。 
vbFirstJan1            1   由 1 月 1 日所在的星期开始(默认)。 
vbFirstFourDays        2   由在新年中至少有四天的第一周开始。 
vbFirstFullWeek        3   由在新的一年中第一个完整的周开始。 

说明
DateDiff 函数用于判断在两个日期之间存在的指定时间间隔的数目。例如可以使用 DateDiff 计算两个日期相差的天数,或者当天到当年最后一天之间的星期数。

要计算 date1 和 date2 相差的天数,可以使用“一年的日数”(“y”)或“日”(“d”)。当 interval 为“一周的日数”(“w”)时,DateDiff 返回两个日期之间的星期数。如果 date1 是星期一,则 DateDiff 计算到 date2 之前星期一的数目。此结果包含 date2 而不包含 date1。如果 interval 是“周”(“ww”),则 DateDiff 函数返回日历表中两个日期之间的星期数。函数计算 date1 和 date2 之间星期日的数目。如果 date2 是星期日,DateDiff 将计算 date2,但即使 date1 是星期日,也不会计算 date1。

如果 date1 晚于 date2,则 DateDiff 函数返回负数。

firstdayofweek 参数会对使用“w”和“ww”间隔符号的计算产生影响。

如果 date1 或 date2 是日期文字,则指定的年度会成为日期的固定部分。但是如果 date1 或 date2 被包括在引号 (" ") 中并且省略年份,则在代码中每次计算 date1 或 date2 表达式时,将插入当前年份。这样就可以编写适用于不同年份的程序代码。

在 interval 为“年”(“yyyy”)时,比较 12 月 31 日和来年的 1 月 1 日,虽然实际上只相差一天,DateDiff 返回 1 表示相差一个年份。