首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Server 2008中将DateTime存储为独立于区域性的

在Server 2008中将DateTime存储为独立于区域性的
EN

Stack Overflow用户
提问于 2013-09-27 11:14:20
回答 3查看 802关注 0票数 0

目前,我面临的挑战是在一个DateTime字段中存储一个NVarChar值,以便它与文化无关。

我已经读过,您可以通过使用CONVERT(int, GETDATE(), 112)将值转换为int,这应该使其与区域性无关,但前一条语句不会存储时间。

将DateTime存储为独立于文化的行业标准是什么?

  • 编辑

请注意,我不能在我的场景中使用DateTime。一定是NVarChar。

  • 编辑2

好吧,找到了我自己问题的答案。

要将DateTime转换为它的二进制(8)原始格式:转换(二进制(8),GETDATE())

然后,我将该值存储在一个VARCHAR字段中,如下所示:转换(VARCHAR(最大),转换(二进制(8),GETDATE()),2)

要从varchar字段中检索它并将其转换为DateTime: DateTime(DateTime)、convert (二进制(8)、TextField ( 2))

正如我所关注的那样,这将存储一个独立于文化的DateTime。

  • 编辑3

看来用户Kaf有最好的解决方案。我宁愿使用格式126将其转换为文本,然后从文本返回到DateTime。

谢谢大家,很抱歉给大家带来了混乱。

EN

回答 3

Stack Overflow用户

发布于 2013-09-27 12:04:43

如果CANNOT将日期存储为Datetime,则可以使用style 126,这会给出ISO8601 format (yyyy-mm-ddThh:mi:ss.mmm (no spaces))。我认为文化是独立的。

小提琴演示

代码语言:javascript
运行
复制
select convert(nvarchar(50),getdate(),126)

最好是将日期存储为日期时间/日期类型。

票数 3
EN

Stack Overflow用户

发布于 2013-09-27 11:17:09

您应该使用DATETIMEDATETIME2数据类型来存储日期和时间值。它们以二进制格式存储在数据库中,并且与区域性无关。

您可以在这里阅读有关MSDN的更多信息:http://msdn.microsoft.com/en-us/library/ms187819(v=sql.100).aspx

关于Server如何存储日期时间值的更多信息:“它使用8个字节存储日期时间值--前4个用于日期,第二个4个用于时间。”(出发地:http://sqlmag.com/sql-server/solving-datetime-mystery)

票数 2
EN

Stack Overflow用户

发布于 2013-09-27 12:36:27

我不想把一个日期存储在varchar字段中,这样它就可以成为“文化独立者”。dateTime数据类型与文化无关。与文化有关的是日期值的显示方式:

代码语言:javascript
运行
复制
MM/dd/YYYY
dd/MM/YYYY
YYYY-MM-DD
etc

但是,如果显示发生变化,则基础值本身仍然是相同的.这就是为什么你可以轻松地将日期从一种格式“转换”到另一种格式.

因此,为了简单起见,我强烈建议您切换到一个与文化无关的日期时间字段。否则,任何进一步使用该字段的内容(计算,显示,打印等)将是一个真正的皮塔。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19049339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档