You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Data Studio插入公历日期自动转回历的解决方法咨询

解决Azure Data Studio中日期显示为回历的问题

核心原因

SQL Server/Azure SQL数据库中日期以二进制形式存储,并无“公历/回历”之分,显示格式由会话语言设置、数据库默认语言或客户端(Azure Data Studio)的区域配置决定。你遇到的情况是:数据库存储的是公历日期,但Azure Data Studio用回历格式显示;查询时需传入公历格式字符串(因为会话解析时按公历处理),回历格式字符串无法被正确解析,所以无结果。

可行解决步骤

1. 修正数据库/登录账号的默认语言

  • 查看当前数据库的默认语言与排序规则:
    SELECT name, default_language_name, collation_name 
    FROM sys.databases 
    WHERE name = '你的员工管理数据库名';
    
  • 将数据库默认语言改为英语(对应公历):
    ALTER DATABASE 你的员工管理数据库名 
    SET DEFAULT_LANGUAGE = us_english;
    
  • 检查当前登录账号的默认语言,若为回历相关语言,一并修改:
    -- 查看登录账号默认语言
    SELECT name, default_language_name 
    FROM sys.server_principals 
    WHERE name = '你的登录用户名';
    
    -- 修改登录账号默认语言
    ALTER LOGIN 你的登录用户名 
    WITH DEFAULT_LANGUAGE = us_english;
    

2. 调整Azure Data Studio的会话与全局设置

  • 临时生效:在查询窗口执行以下语句,强制当前会话使用公历格式显示日期:
    SET LANGUAGE us_english;
    SET DATEFORMAT ymd;
    
    执行后重新查询日期,验证显示是否正常。
  • 永久生效:打开Azure Data Studio设置(快捷键Cmd + ,),搜索SQL Server: Default Language,设置为English (United States);同时搜索Date Format,设置为YYYY-MM-DD。

3. 确认日期列的存储类型(关键)

如果你的日期列是VARCHAR/NVARCHAR等字符串类型(而非DATE/DATETIME/DATETIME2),需先转换为标准日期类型:

  1. 备份目标表数据,避免转换出错。
  2. 将回历字符串转换为公历日期并更新:
    -- 131是回历(Hijri)的格式代码,适用于dd/mm/yyyy格式的回历字符串
    UPDATE 你的表名 
    SET 日期列 = CONVERT(DATE, 日期列, 131);
    
  3. 修改列类型为标准日期类型:
    ALTER TABLE 你的表名 
    ALTER COLUMN 日期列 DATE;
    

4. 验证修改效果

  • 插入一条测试数据:
    INSERT INTO 你的表名(日期列) VALUES ('2024-05-20');
    
  • 查询验证:
    SELECT 日期列 FROM 你的表名 WHERE 日期列 = '2024-05-20';
    
    确认查询结果显示为公历日期,且用公历格式查询能正常返回数据。

额外排查点

检查Mac系统的区域设置:打开系统偏好设置 > 语言与地区,确保“地区”选择使用公历的区域(如“中国”“美国”),避免系统区域影响Azure Data Studio的显示逻辑。

内容的提问来源于stack exchange,提问作者user23487546

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 22:45:09