我想比较日期时间数据类型,如“20/12/2011 00:00:00”,复合字符串日期格式(我的意思是它由日期字符串,月份字符串和年份字符串组成)。我如何将datetime数据类型与字符串进行比较?
例如,coloumn entime是存储“20/12/2011 00:00:00”数据和其他三列(日期,月份,年份)的字符串的datatime数据类型。所以我想比较entime列与日期,月份和年份的组合,我如何编写SQL命令来支持上述要求?
希望你能帮助我吗?
我想比较日期时间数据类型,如“20/12/2011 00:00:00”,复合字符串日期格式(我的意思是它由日期字符串,月份字符串和年份字符串组成)。我如何将datetime数据类型与字符串进行比较?
例如,coloumn entime是存储“20/12/2011 00:00:00”数据和其他三列(日期,月份,年份)的字符串的datatime数据类型。所以我想比较entime列与日期,月份和年份的组合,我如何编写SQL命令来支持上述要求?
希望你能帮助我吗?
最好的选择是将日期时间转换为字符串,然后进行所需的比较。
您可以看到here如何进行转换。
另外还有DATEPART功能。
SELECT *
FROM DateTable
WHERE
DATEPART(YEAR, [DATECOLUMN]) = @YearString
AND DATEPART(MONTH, [DATECOLUMN]) = @MonthString
AND DATEPART(DAY, [DATECOLUMN]) = @DayString
你可以去下面的办法,请你尝试一下,谢谢
SET DATEFORMAT DMY
SELECT CAST(CONVERT(VARCHAR(15), GETDATE(), 105) AS DATETIME)
SELECT CAST(('20'+'-'+'12'+'-'+'2011') AS DATETIME)
举个例子:
SET DATEFORMAT DMY
SELECT CAST(CONVERT(VARCHAR(15), yourDateColumn, 105) AS DATETIME) FROM TableName
SELECT CAST((dayColumn+'-'+monthColumn+'-'+yearColumn) AS DATETIME)
FROM anotherTable
最后的比较:
SELECT t1.* FROM tableName t1, anotherTable t2
WHERE CAST(CONVERT(VARCHAR(15), t1.DateColumnName, 105) AS DATETIME)
= CAST((t2.dayColumn+'-'+t2.monthColumn+'-'+t2.yearColumn) AS DATETIME)
这是你的要求吗?
DECLARE @tblTemp TABLE
(
DAY VARCHAR(10)
,Month VARCHAR(10)
,Year VARCHAR(10)
)
DECLARE @dtDateTime VARCHAR(10) = '20/12/2011 00:00:00'
INSERT INTO @tblTemp VALUES
('01','01','2011'),
('01','02','2011'),
('01','03','2011'),
('01','04','2012');
select * from @tblTemp where CONVERT(DATE,Year +Month+DAY ,103) < CONVERT(DATE,@dtDateTime,103)
提示:将一种数据类型转换为另一种数据类型。 – xQbert