将NVARCHAR转换为DATE SQL



我在将此nvarchar转换为日期时遇到问题:我想将"2021-02-01 00:00:00.0000000000"nvarchar转化为2021-02-0 1日期

DECLARE @var nvarchar(255) = '2021-02-01 00:00:00.0000000'
CONVERT(date, @var, 103)

我已经使用了这个转换功能,但我得到了:

从字符串转换日期和/或时间时转换失败

错误。关于如何解决这个问题有什么帮助吗?

尝试120而不是103103需要一个格式为d/m/y的字符串。

DECLARE @var nvarchar(255) = '2021-02-01 00:00:00.0000000';
SELECT CONVERT(date, @var, 120);

结果(db<>fiddle(:

2021-02-01

还有:

  • 为什么选择nvarchar?日期不需要支持Unicode字符。

  • 尝试让源代码将格式更正为标准的、明确的格式,例如:

    yyyy-mm-ddThh:mm:ss.nnnnnnn
    yyyymmdd hh:mm:ss.nnnnnnn
    

更多关于日期的信息:约会响应

您可以将直接格式化为DATEDATETIME2类型的CAST

DECLARE @var nvarchar(255) = '2021-02-01 00:00:00.0000000'
DECLARE @date date = CAST(@var AS DATE);
SELECT @var as var, @date as [date];

或者甚至在不带格式号的情况下转换它。

DECLARE @var nvarchar(255) = '2021-02-01 00:00:00.0000000'
DECLARE @datetime2 datetime2 = CONVERT(DATETIME2, @var);
SELECT @var as var, @datetime2 as [datetime2];

但对于CASTCONVERT,它对于DATETIME,则需要截断它
默认格式编号为121(ODBC规范,以毫秒为单位(

DECLARE @var nvarchar(255) = '2021-02-01 00:00:00.0000000'
DECLARE @datetime datetime = CONVERT(datetime, LEFT(@var, 23), 121);
SELECT @var as var, @datetime as [datetime];

最新更新