我想将datetime数据类型(如“20/12/2011 00:00:00”)与复合字符串日期格式进行比较(我的意思是它由日期字符串,月份字符串和年份字符串组成) 。
例如,coloumn entime是datatime数据类型,存储“20/12/2011 00:00:00”数据,其他三列(日期,月份,年份)分别为字符串。所以我想比较entime列与日期,月份和年份组合在一起,如何编写SQL命令以支持上述要求?
希望你能帮帮我吗?
答案 0 :(得分:0)
最好的选择是将datetime转换为字符串,然后进行所需的比较。
您可以看到here如何进行转化。
答案 1 :(得分:0)
还有DATEPART功能作为替代方案。
SELECT *
FROM DateTable
WHERE
DATEPART(YEAR, [DATECOLUMN]) = @YearString
AND DATEPART(MONTH, [DATECOLUMN]) = @MonthString
AND DATEPART(DAY, [DATECOLUMN]) = @DayString
答案 2 :(得分:0)
你可以走到哪儿,请你试试看,谢谢
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)
答案 3 :(得分:0)
这是你的要求吗?
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)