sql server在Ubuntu上面,发现通过getdate()获取的时间使用了Universal time时间,但是根据说明应该是返回本地时间。如何获取服务器本地时间?
与 ubuntu 的时区设置有关,修改一下时区试试
export TZ=Asia/Shanghai
ubuntu local time 和Time zone 和RTC time 都是对的,但是在数据库中执行getdate()还是获取的UTC时间,查询到到的资料说sql server在windows 版本和Linux是没有变化的。不知道Docker 运行的有没有影响。
看软件(操作系统),时间 和 时区。如果两者一致就对了。
你所谓“返回本地时间”,是客户端还是服务端?!比如该app在客户端如果做全球化他的时间显示出来应该是这么实现:获取UTC->获取本地(该APP的OS)时区->然后再格式化显示出来;
你看到的不一定是数据库真实的存储数字,你去斟酌斟酌哈~~
如果实在觉得麻烦,我有时候根本就不想用这种类型,直接自行代码控制用long,统一在服务器用utc描述。尤其特么的DateTime在EF中类型扯淡不是11映射,简单方便得多。
查看一下 Sql Server 的环境变量有没有设置 TZ:
– 不如隐茶去 5年前cat /proc/$SQL_SERVER_PID/environ
@不如隐茶去:确实是数据库没配置TZ,用的是docker运行,在启动时需加上-e 'TZ=Asia/Shanghai'
– 我爱CC 5年前