ram*_*mar 8 c# sql-server asp.net
我正在使用Sql server 2005在asp.net中构建应用程序.在我的应用程序中,我必须代表许多日期和日期是尼泊尔(Bikram sambhat),其中某个月的最大日期可以是32.
那么在sql server中表示日期的最佳选择是什么,以便32可以放置为日值并且可以在sql server和asp.net中轻松比较(操作)?
有一个人已经实施了一些在尼泊尔日期和格里高利日期之间转换的课程.这样,您可以以尼泊尔格式输入日期,但以SQL Server可以理解的格式存储它们.看这里:http://rrajbhandari.blogspot.com/2010/06/bikram-sambat-classes-and-controls.html
请记住,任一日历中的日期都可以转换为另一个日历 - 它们指向同一天.
我建议使用内置的Date类型.听起来您的格式中的任何日期都可以轻松转换为标准的sql格式.
我只想编写一个实用程序,以便在加载或写入数据库时将sql server中的任何日期转换为显示格式.
从尼泊尔语到公历的转换并不容易。从两个方面来思考:
第一个很容易 - 存储为 varchar
第二个则不然。如果您想知道 2 个尼泊尔日期之间的差异,可以将第二个日期存储为公历日期,并在它们之间使用 datediff/dateadd(day) 。然而,dateadd(month) 在这里对你来说毫无用处,除非你想知道 2 个尼泊尔日期的差异in Gregorian date months- 这并不常见。
听起来就像只存储在 varchar 中并拥有一个尼泊尔日期库(无论是在前端还是作为 CLR)会更好。
NepaliYear NepaliMonth NepaliDay Gregorian
x 4 2 2014-21-23
etc
Run Code Online (Sandbox Code Playgroud)
但我不确定除了转换之外它对(尼泊尔)日期数学有多大帮助 - 并且仅当您需要在 SQL Server 中进行此类转换时。
@pst 的评论
相比日期时间,更喜欢 VARCHAR 是有原因的。我假设大多数活动的频率是读/写尼泊尔日期 - 它作为 VARCHAR 存储和读取 - 没有转换。当且仅当需要日期数学时,它才涉及库 - 在这种情况下,您调用转换,并且仅当您在任何时间点需要等效的公历时。如果您想要的只是尼泊尔日期/标量或尼泊尔日期/尼泊尔日期之间的数学 - 同样,日期时间没有任何好处 -它无法处理一个月内的第 32 天。
| 归档时间: |
|
| 查看次数: |
529 次 |
| 最近记录: |