簡體   English   中英

將以文本形式存儲的長日期轉換為短日期Access SQL

[英]Convert long date stored as text to short date Access SQL

我試圖通過MS Access SQL將以文本形式存儲的長日期轉換為短日期。

例如,我有一個分析網站信息的表,其中一個字段是2014年6月17日,星期二。我想在另一個表中運行更新查詢,該表將使用此值並將其轉換為17/06/2014。

請問我可以使用哪些功能?

謝謝

埃爾頓

對於諸如“ 2014年6月17日星期二”之類的日期字符串,VBA函數是這樣的

Option Compare Database
Option Explicit

Public Function ParseDateString(DateString As Variant) As Variant
    If IsNull(DateString) Then
        ParseDateString = Null
    Else
        ParseDateString = CDate(Split(DateString, ", ", 2)(1))
    End If
End Function

將字符串轉換為真實的Date值。 如果你正在運行一個更新查詢,並把所得到的值轉換成Date/Time字段,則表中你希望將日期轉換dd/mm/yyyy格式。 只需使用函數的結果(真實的Date值)即可。

如果必須將日期轉換為字符串,請使用明確的日期格式yyyy-mm-dd 如果轉換為dd/mm/yyyy格式,Access可能會混淆不明確的日期,並且12/06/2014可以解釋為12月6日, 而不是 6月12日。

以@VBlades的示例為基礎,但假設其他年份可能出現在源數據中,則允許該年份與2014年不同。

僅當您要解析的日期格式一致時,此方法才有效。

將此函數粘貼到vba模塊中,然后從查詢中調用它。

Function dateParser(datestr As String) As Variant
Dim day_month, year, day_month_year As String
day_month = Split(datestr, ",")(1) 
year = Split(datestr, ",")(2)
day_month_year = day_month + ", " + year 
dateParser = Format(day_month_year, "dd/mm/yyyy")  
End Function

嘗試:

Format(Split("Tuesday, June 17, 2014", ",")(1), "dd/mm/yyyy")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM