Để nó ở chức năng đơn giản hơn S. DATE()
trả về phần ngày của chuỗi ở định dạng YYYY-MM-DD:
SELECT DATE(birthday) FROM `test`
Kết quả:
2004-12-25
2004-12-25
1994-12-25
1994-12-01
Lý do mã của bạn không hoạt động là STR_TO_DATE()
mong đợi các định dạng đầu vào và đầu ra giống nhau, ví dụ:STR_TO_DATE('2014-08-29', '%Y-%m-%d')
. Hãy xem ví dụ trong tài liệu
. Hàm này được sử dụng chủ yếu để chuyển đổi ngày hoặc giờ từ định dạng này sang định dạng khác, trong đó định dạng ban đầu là thứ gì đó từ bên ngoài MySQL và bạn muốn nhập dữ liệu vào định dạng ngày của MySQL chẳng hạn - trong trường hợp này, bạn sẽ biết đâu là định dạng gốc. định dạng ngày là.
Ví dụ:
SELECT STR_TO_DATE('20041225', '%Y-%m-$d'); -- null - formats don't match
SELECT STR_TO_DATE('2004-12-25', '%Y-%m-%d'); -- 2004-12-25 - formats match