我在将此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
而不是103
。103
需要一个格式为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
更多关于日期的信息:约会响应
您可以将直接格式化为DATE
或DATETIME2
类型的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];
但对于CAST
或CONVERT
,它对于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];