同一个语句,为什么在不同的DB执行的结果不一样?

Atwind 2012-08-10 04:16:30
select dateadd(n,1,convert(varchar(10),getdate(),121))
同一个语句,为什么在不同的服务器DB上执行的结果不一样?

2012-08-10 00:01
2012-08-10 12:01
...全文
153 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Atwind 2012-08-13
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]

这个和服务器时间没有关系的吧。
1。
select dateadd(n,1,convert(varchar(10),getdate(),121))
--2012-08-10 00:01:00.000
2。
select convert(varchar(10),getdate(),121)
--2012-08-10
3。
select GETDATE()
--2012-08-10……
[/Quote]

我也是这么认为的,不知是不是DB中可以配置默认的时间是12:00或是0:00,这个很奇怪,我没找到在哪儿配置。
quchen520 2012-08-10
  • 打赏
  • 举报
回复
这个和服务器时间没有关系的吧。
1。
select dateadd(n,1,convert(varchar(10),getdate(),121))
--2012-08-10 00:01:00.000
2。
select convert(varchar(10),getdate(),121)
--2012-08-10
3。
select GETDATE()
--2012-08-10 17:45:57.357

在2中实际上是截取了字符串的前10位的字符
而在1中函数dateadd的最后一个参数是smalldatetime类型的
所以实际上是从字符串类型隐式转换成时间类型
一般转换后产生的时间类型会带上时间默认是00:00:00.000,故会产生1中的结果
至于怎么会产生楼主说的第二个结果我也很奇怪,难道隐式转换的默认有不同?
筱筱澄 2012-08-10
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

都是MSSQL
[/Quote]
它获取的是服务器时间
Atwind 2012-08-10
  • 打赏
  • 举报
回复
都是MSSQL
筱筱澄 2012-08-10
  • 打赏
  • 举报
回复
看一下服务器的时间。
Atwind 2012-08-10
  • 打赏
  • 举报
回复
当然是mssql了。
kkbac 2012-08-10
  • 打赏
  • 举报
回复
都是mssql吗?
Atwind 2012-08-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

LZ这两个服务器的时区是一样的吗?
[/Quote]

相差一个时区。
houyajin 2012-08-10
  • 打赏
  • 举报
回复
数据库的系统时间不一致吧
Mr_Nice 2012-08-10
  • 打赏
  • 举报
回复
LZ这两个服务器的时区是一样的吗?

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧