我正在使用Sql server 2005在asp.net中构建应用程序。在我的应用程序中,我必须代表许多日期&日期是尼泊尔(Bikram sambhat),其中某个月的最大日期可以是32。
那么在sql server中表示日期的最佳选择是什么,以便32可以放置为day value&可以在sql server和asp.net中轻松比较(操作)?
答案 0 :(得分:7)
有一个人已经实施了一些用于在尼泊尔日期和格里高利日期之间转换的课程。这样,您可以以尼泊尔格式输入日期,但以SQL Server可以理解的格式存储它们。看这里:http://rrajbhandari.blogspot.com/2010/06/bikram-sambat-classes-and-controls.html
请记住,任一日历中的日期都可以转换为另一个日历 - 它们指向同一天。
答案 1 :(得分:5)
我建议使用内置日期类型。听起来您的格式中的任何日期都可以轻松转换为标准的sql格式。
每当你加载或写入数据库时,我只会编写一个实用程序来将sql server中的任何日期转换为你的显示格式。
答案 2 :(得分:4)
从尼泊尔到格里高利的转换并不容易。可以通过两种方式来考虑它:
第一个很容易 - 作为varchar存储
第二个不是。如果您想知道2个尼泊尔日期之间的区别,您可以将第二个日期的日期存储为公历等值,并在它们之间使用datediff / dateadd(日期)。但是,dateadd(月)在这里对你没用,除非你想知道2个尼泊尔日期的差异in Gregorian date months
- 不常见。
听起来只是存储在varchar中并且有一个尼泊尔日期库,无论是在前端还是作为CLR,都会更好。
<小时/> 转换可能有助于获得具有相应格里高利日期的完全物化的尼泊尔日期表,因此布局将为
NepaliYear NepaliMonth NepaliDay Gregorian
x 4 2 2014-21-23
etc
但我不确定它会对(尼泊尔)日期数学有多大帮助,除非你需要在SQL Server中进行这样的转换。
@ pst的评论
有理由更喜欢VARCHAR到日期时间。我假设频率,大多数活动是读/写一个尼泊尔日期 - 存储和读取为VARCHAR - 没有转换。当且仅当日期数学 需要时,它是否涉及库 - 在这种情况下,您调用转换,并且只有当您需要在任何时间点与格里高利历等效时。如果您想要的只是NepaliDate /标量或NepaliDate / NepaliDate之间的数学 - 再次,datetime没有任何好处 - 它无法在一个月内处理第32天。
答案 3 :(得分:0)
查看Nepali calendar,这可能会有帮助。