Thông tin chung
Đây là các định dạng mặc định của kiểu dữ liệu datetimes (khi chuyển đổi từ chuỗi)
DT_DBDATE
yyyy-mm-dd
DT_FILETIME
yyyy-mm-dd hh:mm:ss:fff
DT_DBTIME
hh:mm:ss
DT_DBTIME2
hh:mm:ss[.fffffff]
DT_DBTIMESTAMP
yyyy-mm-dd hh:mm:ss[.fff]
DT_DBTIMESTAMP2
yyyy-mm-dd hh:mm:ss[.fffffff]
DT_DBTIMESTAMPOFFSET
yyyy-mm-dd hh:mm:ss[.fffffff] [{+|-} hh:mm]
Lưu ý:DT_DATE và DT_DBTIMESTAMP có cùng một phương pháp SET
Và tôi nghĩ rằng việc chuyển đổi chuỗi thành ngày cũng tùy thuộc vào thông tin văn hóa hiện tại của bạn
Thông tin chi tiết hơn được tìm thấy tại đây
- Các loại dữ liệu dịch vụ tích hợp
- DỊCH THUẬT LOẠI DỮ LIỆU SSIS SANG MÁY CHỦ SQL
Thử nghiệm:
Sau khi đọc bình luận của bạn, tôi không tìm thấy bất kỳ bài viết nào liên quan đến câu hỏi của bạn nên tôi đã thực hiện các thử nghiệm sau:
Chuyển đổi theo ngày giờ ngầm định của SSIS
tôi đã tạo một gói SSIS với một Dataflowtask. trong dataflowtask này, tôi đã tạo Thành phần tập lệnh (làm Nguồn) và Đích đến của tệp phẳng. Tập lệnh có một cột đầu ra OutDate
thuộc loại DT_DbTimeStamp
Bên trong tập lệnh, tôi đã sử dụng mã sau:
Private dtDate As Date = #01/01/2016#
Public Overrides Sub CreateNewOutputRows()
Output0Buffer.AddRow()
Using sw As New IO.StreamWriter("D:\Result.txt", False)
sw.WriteLine("CultureInfo;Date;Format;Accepted")
sw.Close()
End Using
For Each ci As System.Globalization.CultureInfo In System.Globalization.CultureInfo.GetCultures(Globalization.CultureTypes.AllCultures)
For Each strFormat As String In ci.DateTimeFormat.GetAllDateTimePatterns
Dim boolResult As Boolean = True
Try
Output0Buffer.OutDate = dtDate.ToString(strFormat)
boolResult = True
Catch ex As Exception
boolResult = False
End Try
Using sw As New IO.StreamWriter("D:\Result.txt", True)
sw.WriteLine(ci.Name & ";" & dtDate.ToString(strFormat) & ";" & strFormat & ";" & boolResult.ToString)
sw.Close()
End Using
Next
Next
End Sub
Đầu tiên, tôi đang lặp lại tất cả thông tin văn hóa và tôi đang Lấy tất cả các định dạng ngày giờ liên quan đến nó và lặp lại chúng. Sau đó, tôi đang cố chuyển đổi ngày dtDate
được khai báo cho một chuỗi được định dạng và gán nó vào cột Đầu ra.
Vì vậy, nếu việc gán giá trị chuỗi với định dạng được chỉ định cho cột đầu ra DT_DBTIMESTAMP được chấp nhận, điều đó có nghĩa là định dạng được chuyển đổi ngầm định
Output0Buffer.OutDate = dtDate.ToString(strFormat)
Và đây là liên kết của tệp kết quả:
- Result.txt
Chuyển đổi ngầm định về ngày giờ của máy chủ SQL
Có hai định dạng chuỗi ngày giờ được diễn giải chính xác với bất kỳ cài đặt ngôn ngữ nào.
yyyyMMdd
yyyy-MM-ddTHH:mm:ss (ISO8601)
Ngoài ra, bạn có thể lặp lại cùng một thử nghiệm nhưng lần này bằng cách tạo SqlCommand
và thực hiện nó:
Dim sqlcmd as new SqlCommand("SELECT CONVERT(DATETIME,'" + dtdate.ToString(strFormat) + '")"
sqlCmd.ExecuteReader()
Bằng cách đó, bạn có thể làm được nếu sqlcmd ném ra một ngoại lệ, điều đó có nghĩa là không thể chuyển đổi định dạng.