在將.NET DateTime(當是默認(DateTime))轉換爲SqlDateTime時,我應該始終檢查.NET日期是否在SqlDateTime.MinValue和SqlDateTime.MaxValue之間[或者]是否有一個好方法去做這個。NET DateTime到SqlDateTime轉換
49
A
回答
90
日期實際上可能超出該範圍嗎?它來自用戶輸入嗎?如果對這些問題中的任何一個的答案都是肯定的,那麼你應該經常檢查 - 否則你會讓應用程序容易出錯。
您可以格式化你的入選日在SQL語句相當容易:
var sqlFormattedDate = myDateTime.Date.ToString("yyyy-MM-dd HH:mm:ss");
2
如果你檢查的DBNull,轉換SQL日期時間爲.NET日期時間不應該是一個問題。但是,您可能會遇到將.NET DateTime轉換爲有效的SQL DateTime的問題。
SQL Server無法識別1753年1月1日之前的日期。那是英格蘭採用格里曆的那一年。通常檢查DateTime.MinValue是足夠的,但如果您懷疑數據可能在18世紀之前有數年,則需要進行另一次檢查或使用不同的數據類型。 (我經常想知道博物館在他們的數據庫中使用什麼)
檢查最大日期並不是必須的,SQL Server和.NET DateTime都有一個最大日期爲12/31/9999它可能是一個有效的業務規則,但它不會造成問題。
1
還請記住分辨率[時間的量]是不同的。
http://msdn.microsoft.com/en-us/library/system.data.sqltypes.sqldatetime.aspx
SQL一個是3.33毫秒和.NET一個爲100 ns。
對我的追求與entitie做到這一點
1
,我偶然在這裏,只是擊中回寄我已經找到了...用EF4時
,「一個sql的」 datetime列可以從充滿.NET的DateTime使用BitConverter。
EntitieObj.thetime = BitConverter.GetBytes(DateTime.Now.ToBinary());
也Fakrudeen的鏈接給我進一步......謝謝。
0
- 要比較只有日期部分,你可以這樣做:
var result = db.query($"SELECT * FROM table WHERE date >= '{fromDate.ToString("yyyy-MM-dd")}' and date <= '{toDate.ToString("yyyy-MM-dd"}'");
相關問題
- 1. 如何將SqlDateTime值轉換爲.Net :: DateTime
- 2. 將SQLDateTime DayTicks轉換回DateTime值
- 3. Sqlite datetime轉換爲.Net datetime
- 4. .Net DateTime到DOS日期32位轉換
- 5. 將.NET DateTime轉換爲OracleDate
- 6. TIMESTAMP到DATETIME轉換?
- 7. Scala轉換到datetime
- 8. 轉換VARCHAR到DATETIME
- 9. 將Windows FILTIME值轉換爲.NET DateTime
- 10. 將DateTime轉換爲.NET中的ticks?
- 11. 如何將.NET tick轉換爲python datetime?
- 12. 轉換datetime到UniversalDateTime UTC
- 13. C#DateTime到MySqlDateTime轉換
- 14. 從DateTime轉換到TimeStamp
- 15. SSRS Azure DateTime到LocaldateTime轉換
- 16. 轉換datetime到日期
- 17. 如何轉換DateTime?爲DateTime
- 18. 轉換爲DATETIME
- 19. 轉換爲DateTime
- 20. .net中的泰語DateTime轉換問題.net
- 21. XSLT轉換datetime到日期格式
- 22. DateTime格式轉換
- 23. TimeSpan轉換爲DateTime
- 24. NVARCHAR TO DATETIME轉換
- 25. datetime UTC轉換mongodb
- 26. DateTime轉換爲FileTimeUtc
- 27. int轉換爲DateTime
- 28. DateTime轉換異常
- 29. UTC爲datetime轉換
- 30. PHP的DateTime轉換
@JohnSaunders:是啊,這是有點挑剔。 – Will