Skip to content

Generated sql for ZonedDateTime is nvarchar(255) not datetime type #2314

@almothafar

Description

@almothafar

Expected behavior

Generated code should be datetimeoffset or at least datetime for SQL Server

Actual behavior

Currently, it generates nvarchar(255) for that column.

Steps to reproduce

@Entity
@Table(name = "SomeTable", schema = "dbo")
public class SomeModelData extends Model {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "ID")
    private Integer id;

    @Column(name = "Year")
    private Integer year;

    @Column(name = "Month")
    private Integer month;

    @Column(name = "Filename", nullable = false, length = 100)
    private String filename;

    @Column(name = "CreatedDate", nullable = false)
    private ZonedDateTime createdDate;

}

Generates:

create table [dbo].[SomeTable] (
  [ID]                          integer identity(1,1) not null,
  [Year]                        integer,
  [Month]                       integer,
  [Filename]                    nvarchar(100) not null,
  [CreatedDate]                 nvarchar(255) not null,
  constraint [pk_SomeTable] primary key ([ID])
);

Workaround

I just add columnDefinition = "datetimeoffset", to @Column

Just a side note: I really prefer to use a datatype that respects timezone for ZonedDateTime as datetimeoffset in SQL server, and just another note LocalDateTime makes it datetime2 for SQL server, which is fine I think.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions