使用MySQL& SQL Server
ID sDate
001 03/06/2010
002 07/08/2010
....
....
sDate数据类型是varchar 格式mm / dd / yyyy
我想取日期计数意味着还有多少天,它应该比较系统日期......
如何将我的varchar转换为datetime数据类型,然后如何将mysdate与系统进行比较以获取总日数
sDate - SystemDate = Totalday
ExpectedOutput
ID sDate Totaldays
001 03/07/2010 3 days
002 07/07/2010 7 days
.....
如何查询此情况。需要查询帮助。
答案 0 :(得分:7)
你的问题陈述MySQL&这里的SQL Server都是:
SQL Server datediff功能:
SELECT ID, DATEDIFF(DAY, GETDATE(), CONVERT(DATETIME, sDate)) FROM TABLE
MySQL datediff功能:
SELECT ID, DATEDIFF(CURDATE(), STR_TO_DATE(sDate, '%c/%d/%Y')) FROM TABLE
这使用STR_TO_DATE函数将varchar转换为日期,并假设日期字符串的格式为月/日/年格式。
答案 1 :(得分:0)
Gopal,为了回应你的“如何将varchar转换为mysql中的日期时间......”,这很简单:
ALTER TABLE sometable CHANGE sDate sDate datetime;
并且MySQL会愉快地尝试为您转换值。但是,如果它无法正确解析原始日期字符串,则该记录的sDate将设置为NULL
或0000-00-00
。您必须首先按下sDate字段,将其转换为日期字符串的更正常的MySQL格式,即YYYY-MM-DD。一个暴力破解将是:
UPDATE sometable SET sDate=CONCAT(
SUBSTR(sDate, 6, 4),
'/',
SUBSTR(sDate, 3, 2),
'/',
SUBSTR(sDate, 0, 2)
);
当然,假设您的日期是DD / MM / YYYY格式。如果它们是MM / DD / YYYY,那么只需交换中间和最后一个SUBSTR呼叫。完成此更新后,您可以使用ALTER TABLE更改字段类型。
当然,对于像这样影响整个表的任何事情,请确保先备份它。