如何将Date/Time字段更新为对应日期的12 AM?
如何将Date/Time字段转换为当日12:00 AM
针对你需要把任意时间的DateTime字段转为当日零点(12:00 AM)的需求,以下是几种常用技术场景的实现方法:
SQL 场景
不同数据库的函数略有差异,核心是提取日期部分并重置时间为零点:
MySQL/MariaDB
UPDATE 你的表名 SET newField = CAST(DATE(startTime) AS DATETIME) -- 可添加WHERE条件过滤需要更新的行
DATE(startTime)会提取日期部分,再转为DATETIME类型就自动补全00:00:00。
SQL Server
UPDATE 你的表名 SET newField = DATEADD(day, DATEDIFF(day, 0, startTime), 0)
通过计算从0日期到startTime的天数,再把这个天数加回0日期,得到当日零点。
JavaScript 场景(前端/Node.js)
直接操作Date对象,重置时分秒毫秒:
function getDayStart(date) { const dayStart = new Date(date); dayStart.setHours(0, 0, 0, 0); return dayStart; } // 示例 const startTime = new Date('2022-03-26T03:40:00'); // 对应26/03/2022 3:40 AM const newField = getDayStart(startTime); console.log(newField.toLocaleString('en-GB', { hour12: true })); // 输出 "26/03/2022, 12:00:00 AM"
Python 场景
使用datetime模块的replace方法重置时间部分:
from datetime import datetime def get_day_start(dt): return dt.replace(hour=0, minute=0, second=0, microsecond=0) # 示例 start_time = datetime.strptime('26/03/2022 3:40 AM', '%d/%m/%Y %I:%M %p') new_field = get_day_start(start_time) print(new_field.strftime('%d/%m/%Y %I:%M %p')) # 输出 "26/03/2022 12:00 AM"
核心逻辑总结:不管用哪种技术,本质都是保留原日期的年、月、日,将时、分、秒、毫秒全部设置为0,这样就能得到当日的12:00 AM。
内容的提问来源于stack exchange,提问作者Indranil Mondal
相关产品推荐
相关产品推荐

