我正在尝试在 MS Access 2003 数据库中检索存储的日期.. 它以格式存储dd/mm/yyyy
,但是当它被检索时,它以格式mm/dd/yyyy
如何强制 MS Access 以格式返回日期dd/mm/yyyy
?
我正在尝试在 MS Access 2003 数据库中检索存储的日期.. 它以格式存储dd/mm/yyyy
,但是当它被检索时,它以格式mm/dd/yyyy
如何强制 MS Access 以格式返回日期dd/mm/yyyy
?
我设法解决了它。
向字段添加格式以强制它们为 dd/mm/yyyy
在我的 C# 应用程序中,我对其进行了调整以处理该格式的日期/一切都很好
您可以使用 Excel TEXT 函数,该函数可以指定语言环境。这是一个formatLocale
MS Access UDF 示例。
Option Compare Database
Option Explicit
'see https://excel.tips.net/T003299_Specifying_a_Language_for_the_TEXT_Function.html
'for countries list
Dim xl As Excel.Application
Function formatLocale(dt As Variant, xlFormat As String) As Variant
setXl
formatLocale = xl.WorksheetFunction.Text(dt, xlFormat)
End Function
Sub test_formatLocale()
'print this month's name in US english
Debug.Print formatLocale(Now, "[$-409]mmmm")
End Sub
Function setXl()
On Error Resume Next
If xl Is Nothing Then
'try getting
Set xl = GetObject(, "Excel.Application")
End If
If xl Is Nothing Then
Set xl = CreateObject("Excel.Application")
End If
End Function
使用格式化功能。
Format(dateVar, "dd/mm/yyyy")
其中 dateVar 最好是 DateTime 类型。
在我的经验中。无论您在某个阶段做什么,微软软件都会对欧洲日期感到困惑,无论是 asp、.net、sql、IE 还是操作系统本身。主要是当有一些歧义时,例如 2012 年 6 月 5 日,可能是 5 月 6 日或 6 月 5 日。我保证在某个阶段这会出错。
设置语言环境会让你产生一种虚假的安全感。
因此,要么坚持使用古怪的美国日期格式 mmddyyyy,要么像我们一样做,完全忘记微软的日期格式,并根据数字字段中的 yyyymmddhhmmss 让您拥有。它更灵活、更强大,因为它与时间结合并允许非常有效的时间比较。微软的问题是他们试图默默地解决问题,我觉得这根本没有帮助。
在 Access 中,日期始终在内部存储,不区分日期/月份。与许多数据库和语言一样,它只是一个实数。
该数字如何转换为日期并显示为日期完全取决于客户端程序及其本地或系统用户设置。
如果 Access 本身是该客户端程序,则日期以当前用户设置格式显示和编辑,可根据当前 Windows 用户区域设置进行推测。除了在 VBA 中:那么在代码和 SQL 中输入和比较的格式始终是 mm/dd/yyyy,因为 VBA 是一种英语(美国)书面语言。
如果区域设置不是美国,则在 Microsoft Access 中使用今天的日期作为默认值时要非常小心。(我的是英国)。
这克服了我在匆忙中将字段定义为短文本并随后引入了默认值 =Date$() 时遇到的问题。是的,它很草率,生成了美国 mm/dd/yyyy 格式,并且必须使用日期选择器进行修复。