我正尝试在数据库中获取日期,但当日期小于12天时,月份和日期会被切换
示例:在数据库2012-02-10 (2012年10月2日)中,我执行此操作时获得的值:
lastDateMill = Nz(DLookup("LastContactDate", "Mills", "MillID = " & lstMills.Column(0, i)), 0)
是
lastDateMill = "10/02/2012" 所以我认为这只是一个格式问题,但是当我这样做的时候
Format(lastDateMill, "Long Date") 它等于“2月10日-12日”
这就是我更新日期的方式
DoCmd.RunSQL "UPDATE Mills SET LastContactDate = #" & SalesCallDate & "# WHERE MillID = " & lstMills.Column(0, i)还有SalesCallDate = "2/10/2012",所以这是个不错的日期
那么为什么要切换日期和月份呢?
前端是ms-access-2010,后端是SQL SERVER 2012
发布于 2012-10-03 00:37:19
您的SalesCallDate变量包含文本形式的日期:
SalesCallDate = "2/10/2012“
显然,您希望该字符串的日期格式为m/d/yyyy,但它被解释为d/m/yyyy格式。
以yyyy/mm/dd格式存储字符串值,以避免因区域设置问题而引起的混淆... 2012/02/10
由于SalesCallDate实际上是一个包含日期值的文本框,因此请更改您的UPDATE方法,以避免由于区域设置而导致的日期问题。
Dim strUpdate As String
Dim db As DAO.Database
strUpdate = "UPDATE Mills SET LastContactDate = " & _
Format(Me.SalesCallDate, "\#yyyy-m-d\#") & vbCrLf & _
"WHERE MillID = " & Me.lstMills.Column(0, i)
Debug.Print strUpdate
Set db = CurrentDb
db.Execute strUpdate, dbFailonerror
Set db = Nothing发布于 2012-10-03 01:22:24
尝试一下,通过显式指定一种格式
DoCmd.RunSQL "UPDATE Mills SET LastContactDate = #" & _
Format$(SalesCallDate,"yyyy/mm/dd") & "# WHERE MillID = " & _
lstMills.Column(0, i)更新
也许有更好的方法可以做到这一点,那就是独立于任何格式。这个想法是将日期从一个表格转移到另一个表格,而不需要任何组合、列表或文本。因此,避免了从日期类型到字符串,然后再转换回日期字段的任何转换。
如果表可以连接(假设MillID是列表框的绑定字段):
DoCmd.RunSQL "UPDATE Mills " & _
"INNER JOIN sourceTable ON Mills.MillID = sourceTable.MillID " & _
"SET LastContactDate = sourceTable.SalesCallDate " & _
"WHERE Mills.MillID = " & lstMills否则
DoCmd.RunSQL "UPDATE Mills SET LastContactDate = " & _
"(SELECT SalesCallDate FROM sourceTable WHERE ID = " & sourceID & ")" _
"WHERE Mills.MillID = " & lstMillshttps://stackoverflow.com/questions/12694197
复制相似问题