Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql ms access中不工作的日期之间的比较_Sql_Database_Ms Access_Ms Access 2013 - Fatal编程技术网

Sql ms access中不工作的日期之间的比较

Sql ms access中不工作的日期之间的比较,sql,database,ms-access,ms-access-2013,Sql,Database,Ms Access,Ms Access 2013,使用Access 2013 我在Access中有一个表,其中DueDate列定义为日期/时间 系统默认日期格式为dd/mm/yyyy 要通过VBA根据文本框txtdudeDateUpto中的值更改列表的行源。 所以,我得到了所有任务,其中dude日期小于等于用户在txtDueDateUpto中输入的日期 mySql = "SELECT TaskTbl.TaskID " & " FROM TaskTbl " _ & " WHERE " _

使用Access 2013 我在Access中有一个表,其中DueDate列定义为日期/时间 系统默认日期格式为dd/mm/yyyy

要通过VBA根据文本框txtdudeDateUpto中的值更改列表的行源。 所以,我得到了所有任务,其中dude日期小于等于用户在txtDueDateUpto中输入的日期

mySql = "SELECT TaskTbl.TaskID "
        & " FROM TaskTbl " _
        & " WHERE " _
        & " DueDate is not Null  and " _
        & " Format (DueDate," & """dd/mm/yyyy""" & ") <= " & Format(CDate(Me.txtDueDateUpto.Value), "dd/mm/yyyy") _

Me.listTask.RowSource = mySql
并且,TXTDudeDateUpto的值为2015年7月6日 txtDueDateUpto格式属性设置为短日期 我本来希望使用给定的SQL返回taskid2,3,但我得到的是taskid2

我坐了一整夜,尝试了许多排列和组合,但无法理解这是什么,我做错了


访问VBA的新手。请帮忙,提前谢谢

如果要将日期格式化为字符串并进行比较,请始终使用YYYY-MM-DD格式:

   & " Format (DueDate," & """yyyy-mm-dd""" & ") <= " & Format(CDate(Me.txtDueDateUpto.Value), "yyyy-mm-dd") _
但是,我很确定MS Access可以在不进行转换的情况下进行日期比较:

   DueDate <= CDate(Me.txtDueDateUpto.Value)

始终将日期处理为日期,而不是字符串,没有例外

如果您的文本框被指定了日期/时间格式,您甚至不必使用CDate或DateValue,因为Access会在数据类型date时读取该值

但是,必须将该值与SQL代码连接为日期值的格式正确的字符串表达式:

mySql = "SELECT TaskTbl.TaskID "
        & " FROM TaskTbl " _
        & " WHERE " _
        & " DueDate is not Null and " _
        & " DueDate <= #" & Format(Me!txtDueDateUpto.Value, "yyyy\/mm\/dd") & "#"

我试着用-,替换,但问题仍然存在。为了更好地理解,将在问题中添加我正在测试的数据。@Adarsh。重点不是斜杠和连字符。重点是将日期格式化为年-月-日。
mySql = "SELECT TaskTbl.TaskID "
        & " FROM TaskTbl " _
        & " WHERE " _
        & " DueDate is not Null and " _
        & " DueDate <= #" & Format(Me!txtDueDateUpto.Value, "yyyy\/mm\/dd") & "#"