Sự cố máy tính năm 2000
Sự cố lập trình > Nhu cầu bảo quản bit

Trong thập niên 1960, bộ nhớ máy tính rất khan hiếm và đắt tiền, và hầu hết các dữ liệu được thực hiện trên phiếu đục lỗ là dữ liệu văn bản trong 80 cột tài liệu hồ sơ. Các ngôn ngữ lập trình thời gian như COBOL và RPG xử lý số liệu trong ASCII hoặc EBCDIC. Các nhà lập trình lúc trước họ sử dụng bit gọi là "đục lỗ vùng" để lưu một ký tự trừ cho dạng số âm, hoặc để nén hai chữ số thành một byte hình thức này gọi là mã thập-nhị phân, nhưng nếu không thì đã được xử lý số như dạng chữ thẳng (straight text). Sau một thời gian thì các phiếu đục lỗ chuyển đổi thành băng từ tính và sau đó là những tập tin đĩa, tiếp sau là đến cơ sở dữ liệu đơn giản như ISAM nhưng cấu trúc của các chương trình thường thay đổi rất ít. Phần mềm phổ biến như dBase tiếp tục thực hiện việc lưu trữ văn bản vào những thập niên 1980 và 1990.
Việc tiết kiệm hai chữ số cho mỗi trường ngày đã được chú ý đến vào thập niên 1960. Các nhà lập trình ở thời điểm đó đã không chú ý đến lập trình thời gian mà họ chỉ quan tâm đến giải quyết các vấn đề chương trình, phần cứng dẫn đến việc sai số ở hai chữ số của năm rất đáng kể.
Tất nhiên sẽ có trường hợp ngoại lệ. Người đầu tiên biết được sự cố này là nhà khoa học máy tính nổi tiếng Bob Bemer, người đã nhận ra vào năm 1958 khi làm việc trên phần mềm phả hệ. Ông đã trải qua hai mươi năm đèn sách để trở thành nhà lập trình viên IBM, chính phủ Mỹ và ISO đã tham gia vào nhưng kết quả đem lại không đáng là bao. Điều này đã thúc đẩy ngôn ngữ lập trình COBOL ra đời vào năm 1961 để xác định bốn chữ số của năm cho chính xác. Mặc dù sự cố này được thông báo trên các tạp chí từ năm 1970 trở đi nhưng phần lớn các lập trình viên mới công nhận sự cố lớn Y2K này trong giữa thập niên 1990, thậm chí kéo dài đến gần cuối thập niên này mới được giải quyết thoả đáng.
Chú ý sớm
Người đầu tiên được biết là giải quyết công khai vấn đề này là Bob Bemer, người đã nhận thấy nó vào năm 1958 do kết quả của công việc trên phần mềm phả hệ. Ông đã dành hai mươi năm tiếp theo để cố gắng làm cho các lập trình viên, IBM, chính phủ Hoa Kỳ và Tổ chức Tiêu chuẩn hóa Quốc tế nhận thức được vấn đề, với rất ít kết quả. Điều này bao gồm khuyến nghị rằng mệnh đề hình ảnh COBOL nên được sử dụng để chỉ định bốn năm chữ số cho ngày.
Vào những năm 1980, ngành môi giới bắt đầu giải quyết vấn đề này, chủ yếu là do trái phiếu có ngày đáo hạn sau năm 2000. Đến năm 1987, Sở giao dịch chứng khoán New York đã chi hơn 20 triệu đô la, bao gồm cả "một nhóm 100" lập trình viên trên Y2K.
Mặc dù các bài báo trên tạp chí về chủ đề này từ năm 1970 trở đi, phần lớn các lập trình viên và nhà quản lý chỉ bắt đầu nhận ra Y2K là một vấn đề lờ mờ vào giữa những năm 1990, nhưng ngay cả khi đó, quán tính và sự tự mãn khiến nó hầu như không được giải quyết cho đến vài năm trước thập kỷ. Năm 1989, Erik Naggum là công cụ đảm bảo rằng thư internet đã sử dụng bốn chữ số đại diện của năm bằng cách bao gồm một khuyến nghị mạnh mẽ về hiệu ứng này trong tài liệu yêu cầu máy chủ internet RFC 1123. Vào ngày Cá tháng Tư năm 1998, một số công ty đã đặt ngày các máy tính lớn của họ thành năm 2001, do đó "ngày sai sẽ được coi là niềm vui tốt thay vì tính toán xấu" trong khi có cả ngày thử nghiệm.
Trong khi sử dụng 3 chữ số năm và 3 chữ số trong năm đó đã được một số người sử dụng, những người khác đã chọn sử dụng số ngày kể từ ngày cố định, chẳng hạn như ngày 1 tháng 1 năm 1900. Không hành động không phải là một lựa chọn và có nguy cơ thất bại lớn. Các hệ thống nhúng có logic ngày tương tự dự kiến sẽ gặp trục trặc và khiến các tiện ích và cơ sở hạ tầng quan trọng khác bị hỏng.
Tiết kiệm không gian vào các ngày được lưu trữ vẫn tồn tại trong thời đại Unix, với hầu hết các hệ thống biểu thị ngày thành một từ 32 bit duy nhất, thường biểu thị ngày là giây trôi qua từ một ngày cố định, gây ra vấn đề Y2K38 tương tự