如何获得总天数

时间:2010-06-30 03:50:36

标签: mysql

使用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
.....

如何查询此情况。需要查询帮助。

2 个答案:

答案 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将设置为NULL0000-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更改字段类型。

当然,对于像这样影响整个表的任何事情,请确保先备份它。