我正在使用sql server 2005在asp.net中构建应用程序.在我的应用程序中,我必须表示很多日期和日期是尼泊尔语(Bikram sambhat),其中一个月的最大日数可以是32.
那么在sql server中代表日期的最佳选择是什么,这样32个可以放在日期值&这可以很容易地比较(操纵)在sql server以及asp.net?
解决方法
从尼泊尔到公历没有一个简单的转换.有两种想法:
>需要显示尼泊尔的日期
>需要操纵(例如,找到月,日等之间的差异)
第一个是容易的 – 作为varchar存储
第二个不是.如果您想知道2个尼泊尔日期之间的差异,您可以将日期作为公历的第二个日期存储,并在其间使用datediff / dateadd(day).然而,dateadd(月)在这里将无济于事,除非您想知道公历日期的2个尼泊尔日期的差异 – 不常见.
听起来就像存储在varchar中,并且有一个用于尼泊尔日期的图书馆,无论是在前端还是作为CLR,都会更好地下降.
它可能有助于转换具有相应公历日期的完全实现的尼泊尔日期表,因此布局将是
NepaliYear NepaliMonth NepaliDay Gregorian x 4 2 2014-21-23 etc
但是我不确定这将有助于(尼泊尔语)日期数学超越转换 – 只有在sql Server中需要这样的转换.
编辑
@ pst的评论
有理由喜欢VARCHAR到datetime.我假设频率,大部分的活动是读/写一个尼泊尔日期 – 它被存储和读取为一个VARCHAR – 没有转换.如果且仅当需要日期数学时,它涉及图书馆 – 在这种情况下,您调用转换,只有当您需要任何时间的公历相当于.如果你想要的是在NepalDate / scalar或NepaliDate / NepaliDate之间的数学 – 再次,datetime不提供任何好处 – 它不能在一个月内处理第32天.