在sql server(datetime类型)中存储日期时间时,它以什么格式存储它?

cod*_*ing 9 sql-server datetime

在sql server 2008中存储datetime值时,使用datetime类型,它将以什么格式存储值?

它是自1970年以来的秒数(或其他)?

在应用程序端(.net),我传入一个datetime对象.

当我在查询分析器中查看表的行时,是否会根据我的文化设置对其进行格式化,或者我是否正在查看数据库中存储的内容?

Mat*_*hew 13

在内部,根据SQLDenis,它们存储为两个整数
http://blogs.lessthandot.com/index.php/DataMgmt/DataDesign/how-are-dates-stored-in-sql-server

在查询分析器中查看它们时,您会看到已评估的数字.

不会存储为"unix time"
http://en.wikipedia.org/wiki/Unix_time


And*_*mar 6

它存储为表示自1900年1月1日以来的天数的浮点数.如果通过将其转换为int来向下舍入,则只留下日期部分:

select  cast(cast(getdate() as int) as datetime)
-->
2011-07-12 00:00:00.000
Run Code Online (Sandbox Code Playgroud)

或者如果你为它添加一个数字,那就是增加了几天.例如,添加0.5相当于添加12小时:

select  getdate() + 0.5
-->
2011-07-12 11:22:09.927
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅此MSDN文章.

日期时间不包括格式信息; 查询分析器可以以任何方式显示它.它可能会尝试尊重您的客户端PC的区域设置.

  • +1它们可以被视为浮点并在SQL中进行操作,就像它们一样,但是当它们被写入磁盘时它们就是整数. (2认同)