2013-06-28 71 views
6

Tôi tyring để lấy dữ liệu từ bảng truy cập của tôi dựa trên cột ngày, yêu cầu là để hiển thị tất cả mọi thứ lớn hơn giá trị nhất địnhChuyển đổi String để ngày trong MS Access Query

Tôi cố gắng để đúc giá trị của tôi mà là một chuỗi bằng cách sử dụng chức năng Định dạng & CDate với loại thời gian ngày, nó sẽ phát ra là tràn.

Dưới đây là truy vấn:

Select * from Events 
Where Events.[Date] > cDate(Format("20130423014854","yyyy-MM-dd hh:mm:ss")) 

Sample ngày Ghi giá trị gia tăng từ Bảng: 2013/04/23 13: 48:. 54,0

Sự kiện [Ngày] là một ngày/giờ loại lĩnh vực trong việc tiếp cận

Làm cách nào để khắc phục sự cố này?

+0

Hãy [sửa] (http://stackoverflow.com/posts/17361338/edit) câu hỏi của bạn để làm rõ:. Là 'Sự kiện [Ngày] 'lĩnh vực một' Ngày/Trường Time' hoặc trường 'Văn bản'? –

+0

Xong !! .. đó là trường Ngày/Giờ – user2385057

+0

Được rồi, tốt. Bạn đã thử sử dụng 'Where Events. [Date]> # 2013-04-23 01: 48: 54 #'? –

Trả lời

1

Về cơ bản, điều này sẽ không làm việc ra

Format("20130423014854","yyyy-MM-dd hh:mm:ss") 

chức năng định dạng sẽ chỉ làm việc nếu chuỗi của bạn có đúng định dạng

Format (#17/04/2004#, "yyyy/mm/dd") 

Và bạn cần phải biết những gì datatype của trường [Ngày] là ? vì tôi không thể đặt giá trị này 2013-04-23 13: 48: 54.0 trong trường Ngày phát sinh (tôi sử dụng MS access2007 btw). Bạn có thể muốn xem chủ đề này select date in between

+0

Ngày là trường kiểu ngày/giờ được cấu hình trong cơ sở dữ liệu – user2385057

3

Trong Access, nhấp Create > Module và dán vào đoạn mã sau

Public Function ConvertMyStringToDateTime(strIn As String) As Date 
ConvertMyStringToDateTime = CDate(_ 
     Mid(strIn, 1, 4) & "-" & Mid(strIn, 5, 2) & "-" & Mid(strIn, 7, 2) & " " & _ 
     Mid(strIn, 9, 2) & ":" & Mid(strIn, 11, 2) & ":" & Mid(strIn, 13, 2)) 
End Function 

Hit Ctrl +S và lưu các mô-đun như modDateConversion.

Bây giờ hãy thử sử dụng một truy vấn như

Select * from Events 
Where Events.[Date] > ConvertMyStringToDateTime("20130423014854") 

--- Chỉnh sửa ---

giải pháp thay thế tránh VBA chức năng người dùng định nghĩa:

SELECT * FROM Events 
WHERE Format(Events.[Date],'yyyyMMddHhNnSs') > '20130423014854' 
+0

hoạt động với các hành vi tương tự như tôi đã đề cập trước đó cho thấy tất cả các bản ghi ngay cả với dấu thời gian nhỏ hơn giá trị trên nhưng cùng ngày .. tôi cũng đang tìm cách thực hiện trực tiếp hơn vì điều này được xây dựng trong mã Java .. vì vậy không thể làm việc với chức năng này vì bây giờ tôi có thể có quyền truy cập được cài đặt tại máy chủ đích – user2385057

+0

@ user2385057 RE: không sử dụng VBA - Tôi đã cập nhật câu trả lời của mình. –

+0

+1 Yêu sự đơn giản của bản cập nhật để chuyển đổi trường ngày cho so sánh. –

1
cdate(Format([Datum im Format DDMMYYYY],'##/##/####')) 

chuyển xâu mà không ký tự dấu chấm câu vào ngày

0

Nếu bạn cần để hiển thị tất cả các hồ sơ sau khi 2014/09/01, thêm video này vào truy vấn của bạn:

SELECT * FROM Events 
WHERE Format(Events.DATE_TIME,'yyyy-MM-dd hh:mm:ss') >= Format("2014-09-01 00:00:00","yyyy-MM-dd hh:mm:ss") 
4

Sử dụng chức năng DateValue để chuyển đổi một chuỗi cho đến nay. Đó là cách dễ nhất để làm điều này.

DateValue (String ngày)

+0

Thật tuyệt khi chia sẻ một ví dụ –

Các vấn đề liên quan