Sql 使用字符串操作手动将日期分隔为3个变量(日、月、年)

Sql 使用字符串操作手动将日期分隔为3个变量(日、月、年),sql,sql-server,tsql,Sql,Sql Server,Tsql,使用字符串操作手动将日期分隔为3个变量(日、月、年) 例如: DECLARE @str varchar(MAX), day varchar(max), month varchar(max), year varchar(max) SET @str = '15/12/2018' 结果应该是: day = 15 month = 12 year = 2018 最后,我想在sql server中将这些变量合并为1个日期格式的变量 在sql server中设置日期格式: 2018-12-15 使用转

使用字符串操作手动将日期分隔为3个变量(日、月、年)

例如:

DECLARE @str varchar(MAX), day varchar(max), month varchar(max), year varchar(max)

SET @str = '15/12/2018'
结果应该是:

day = 15
month = 12
year = 2018
最后,我想在sql server中将这些变量合并为1个日期格式的变量

在sql server中设置日期格式:

2018-12-15

使用转换函数
CONVERT()
从字符串值转换日期,并使用
DATEPART()
函数从日期获取具体的
日期
月份
年份

DECLARE @string varchar(20) = '15/12/2018'
DECLARE @actualdate date

SELECT @actualdate = CONVERT(date, @string, 103)

SELECT @actualdate AS DATE

SELECT 
       DATEPART(day, CONVERT(date, @actualdate, 103)) Day, 
       DATEPART(MONTH, CONVERT(date, @actualdate, 103)) Month, 
       DATEPART(YEAR, CONVERT(date, @actualdate, 103)) Year

SQL Server中有用于此的Format函数。试试这个-选择格式(getdate(),'yyyy-MM-dd')理想情况下,不要在更合适的数据类型可用的地方使用字符串操作。如果您将数据保存在
datetime
(现在是
date
datetime2
)列/变量中,您将避免许多格式问题。只有当您开始将数据视为字符串时,才会出现格式化问题。