Sql typerorm减去日期00:00:00的1天(可能是一个乏味的bug)
我使用的是一个旧式SQL Server数据库,它存储的日期不是UTC格式。我正在尝试使用TypeORM插入一个Sql typerorm减去日期00:00:00的1天(可能是一个乏味的bug),sql,node.js,sql-server,typeorm,tedious,Sql,Node.js,Sql Server,Typeorm,Tedious,我使用的是一个旧式SQL Server数据库,它存储的日期不是UTC格式。我正在尝试使用TypeORM插入一个smalldatetime 这是TypeORM执行的操作: INSERT INTO foo(date) VALUES (@0) -- PARAMS: SELECT * FROM @OutputTable -- PARAMETERS: [{"value":"2020-11-09T23:00:00.000Z","type":&quo
smalldatetime
这是TypeORM执行的操作:
INSERT INTO foo(date) VALUES (@0)
-- PARAMS: SELECT * FROM @OutputTable -- PARAMETERS: [{"value":"2020-11-09T23:00:00.000Z","type":"smalldatetime","params":[]}]
这应该在DB中保存“2020-11-10 00:00:00”(GMT+1,服务器也是GMT+1),但出于某种原因,正在保存“2020-11-09 00:00:00”。我认为当TypeORM尝试插入的结果日期是00:00:00时,它不会改变日期。我试过使用其他时间戳,只要大于或等于00:01:00,它就可以工作
- 操作系统:Windows
- Node.js:v12.16.2
- 类型脚本:v4.0.3
- 类型:v0.2.28
mssql 7.0.0-alpha.1
版本时(为了更新冗长的
),typeorm无法连接:
const serverSql: SqlServerConnectionOptions = {
name: process.env.DB_SQL_DEFAULT_NAME,
entities: [`${__dirname}/../../schemas/**/*.js`],
type: 'mssql',
host: process.env.DB_SQL_DEFAULT_HOST,
port: Number(process.env.DB_SQL_DEFAULT_PORT),
username: process.env.DB_SQL_DEFAULT_USER,
password: process.env.DB_SQL_DEFAULT_PASSWORD,
requestTimeout: 30000,
options: {
connectionIsolationLevel: 'READ_UNCOMMITTED',
isolation: 'READ_UNCOMMITTED',
enableArithAbort: false
},
pool: {
acquireTimeoutMillis: 30000
},
logging: 'all'
};
await createConnections([serverSql]);
引发此错误:
连接错误:“config.options.connectionIsolationLevel”属性的类型必须为number。接收到的类型字符串(READ_UNCOMMITTED)
smalldatetime
没有时区上下文。如果您将其传递给'2020-11-09T23:00:00.000Z'
它将被存储为2020-11-09T23:00
;时区信息将被忽略,它不会转换为实例的本地时区。但是TypeForm会将其转换为本地时区,因此在GMT+1中,尽管它表示2020-11-09T23:00:00.000Z
它插入2020-11-10T00:00
(或者应该是,目前它插入2020-11-09T00:00
)